控件属性不允许更改

时间:2013-12-05 07:43:37

标签: c# winforms

我的mainForm包含两个按钮(btnLoad& btnChange)和一个面板

单击btnLoad时,它会将其他表单(有5个不同的控件与不同的控制器)加载到面板中。让我假设其中一个名为Form2,其中包含一个标签(labelMessage)

我的问题是,当我点击btnChange时,以下语句将无效。

f2.labelMessage.Text = "Button Change Clicked";

我的代码是

// codes on mainFrom

private void btnChange_Click(object sender, EventArgs e)
{

   Form2 f2 = new From2();
   f2.labelMessage.Text = "Button Change Clicked"; //labelMessage's modifier is public

}


private void btnLoad_Click(object sender, EventArgs e)
{
    panelDock.Controls.Clear();
    Form f2 = new Form2();
    f2.TopLevel = false;
    panelDock.Controls.Add(f2);
    f2.Show();

}

这是错的吗?

1 个答案:

答案 0 :(得分:6)

由于已经显示Form2,您应该使用Application.OpenForms而不是创建Form2的新实例

private void btnChange_Click(object sender, EventArgs e)
{
    Form2 f2 = (Form2)Application.OpenForms["Form2"];
    f2.labelMessage.Text = "Button Change Clicked"; //labelMessage's modifier is public
}

从您的评论中,您可以尝试将Form2放在面板中

private void btnChange_Click(object sender, EventArgs e)
{
    Form2 f2 = (Form2)panel1.Controls["Form2"];
    f2.labelMessage.Text = "Button Change Clicked"; //labelMessage's modifier is public
}
相关问题