我的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();
}
这是错的吗?
答案 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
}