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

注意: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

    }

有什么帮助吗?请。


莫回无
浏览 169回答 1
1回答

繁星点点滴滴

代替Form1 f1 = new Form1();利用Form1 f1 = this.MDIParent as Form1;if (f1 != null){&nbsp; &nbsp; f1.getinfolabel(sender as Label);}正如已经指出的那样,您正在创建一个新的 Form1 实例并与之交互,而不是与父窗体交互。只要您正确设置了 Form2 的 MDIParent,那么上面的方法就可以工作。另一种方法是使用:Form1 f1 = Appliction.OpenForms.OfType<Form1>().FirstOrDefault();if (f1 != null){&nbsp; &nbsp; f1.getinfolabel(sender as Label);}
打开App,查看更多内容
随时随地看视频慕课网APP