为了账号安全,请及时绑定邮箱和手机立即绑定

当我从另一个表单调用方法时,控件不会更改颜色或文本

当我从另一个表单调用方法时,控件不会更改颜色或文本

C#
莫回无 2022-01-09 17:33:50
注意: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);

}


查看完整回答
反对 回复 2022-01-09
  • 1 回答
  • 0 关注
  • 168 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信