Question

I dont understand why it doesnt work. I want to set label's text outside from popup form.

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
{
}

Usage:

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

Text saves here - controlLabel.Text = value; but label's text doesnt change. I tried Application.DoEvents() but no luck.

Was it helpful?

Solution

Instead of

new ComboBoxPopup().ShowDialog(this);

you must state

txp.ShowDialog(this);

Otherwise you create and show a new instance of your popup and the label change to the first instance is not shown.

OTHER TIPS

Well, the answer to your question is that controlLabel isn't placed on BasePopup. However, the solution to your problem is quite a bit different. It appears that what you really want is this:

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);
    }
 }
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top