我的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(); }
这是错的吗?
由于已经显示了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 }