注意:Form2 是 MDI 子窗体,我将 Form1 的所有修饰符设置为 Public当我想更改颜色或文本等时,我的方法不起作用......例如:有两种形式,Form1 和 Form2。在 Form2: label1.Click 事件中我这样做了:在表格 2 中:private void label1_MouseClick(object sender, MouseEventArgs e) { Form1 f1 = new Form1(); Label name = ((Label)sender); f1.getInfoLabel(name); }好的,一切都工作到这里,但在那里:在表格 1 中:public void getInfoLabel(Label obj) { pictureBox1.BackColor = obj.Forecolor; //not working TextBox1.Text = obj.Text; //not working MessageBox.Show(obj.Forecolor.ToString()); //working MessageBox.Show(obj.Text); //working }有什么帮助吗?请。
1 回答
繁星点点滴滴
TA贡献1803条经验 获得超3个赞
代替
Form1 f1 = new Form1();
利用
Form1 f1 = this.MDIParent as Form1;
if (f1 != null)
{
f1.getinfolabel(sender as Label);
}
正如已经指出的那样,您正在创建一个新的 Form1 实例并与之交互,而不是与父窗体交互。只要您正确设置了 Form2 的 MDIParent,那么上面的方法就可以工作。
另一种方法是使用:
Form1 f1 = Appliction.OpenForms.OfType<Form1>().FirstOrDefault();
if (f1 != null)
{
f1.getinfolabel(sender as Label);
}
- 1 回答
- 0 关注
- 168 浏览
添加回答
举报
0/150
提交
取消