2014-04-23 2 views
0

왜 작동하지 않는지 이해하지 못합니다. 레이블의 텍스트를 팝업 양식 외부로 설정하고 싶습니다.팝업 텍스트의 레이블 텍스트를 변경할 수 없습니다.

class BaseForm : Form 
{} 

public class BasePopup 
{ 
    private Form popupForm; 
    private Panel controlPanel; 
    private Label controlLabel; 

    public BasePopup() 
    { 
     popupForm = new BaseForm 
     { 
      ... 
     }; 

     controlPanel = new Panel { Dock = DockStyle.Fill, BorderStyle = BorderStyle.Fixed3D }; 
     popupForm.Controls.Add(controlPanel); 

     controlLabel = new Label { Location = new Point(30, 30), Text = "AAA" }; 
     controlPanel.Controls.Add(controlLabel); 
    } 
} 

public string ControlLabelText 
    { 
     get { return controlLabel.Text; } 
     set { controlLabel.Text = value; } 
    } 

public class ComboBoxPopup : BasePopup 
{ 
} 

는 사용법 :

var txp = new ComboBoxPopup(); 
     txp.ControlLabelText = "Please select the language"; 
     new ComboBoxPopup().ShowDialog(this); 

텍스트가 여기에 저장 - controlLabel.Text = value; 하지만 라벨의 텍스트 나던 변화. 나는 Application.DoEvents()을 시험했지만 행운은 없다.

답변

1

대신

new ComboBoxPopup().ShowDialog(this); 

당신은

txp.ShowDialog(this); 

그렇지 않으면 사용자가 만든 명시해야하며, 표시되지 않습니다 당신의 팝업의 새로운 인스턴스 및 첫 번째 인스턴스로 레이블 변화를 보여줍니다.

+0

젠장! 참으로 부끄러운 실수! 고맙습니다. – user3328720

+0

문제 없습니다. 문제가 해결 될 경우 답을 수락하십시오. 감사. – silent

1

질문에 대한 답변은 이 BasePopup에 있지 않다는 것입니다. 그러나 문제에 대한 해결책은 상당히 다릅니다. 그것 나타납니다 당신이 정말로 원하는 것은이 :

public class BasePopup : BaseForm 
{ 
    private Panel controlPanel; 
    private Label controlLabel; 

    public BasePopup() 
    { 
     controlPanel = new Panel { Dock = DockStyle.Fill, BorderStyle = BorderStyle.Fixed3D }; 
     this.Controls.Add(controlPanel); 

     controlLabel = new Label { Location = new Point(30, 30), Text = "AAA" }; 
     controlPanel.Controls.Add(controlLabel); 
    } 
} 
관련 문제