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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当我从另一个表单调用方法时,控件不会更改颜色或文本相关的知识,希望对你有一定的参考价值。

注意:Form2是MDI子表单,我将所有Form1的修饰符设置为Public

当我想要更改颜色或文本等时,我的方法不起作用...例如:有两种形式,Form1和Form2。在Form2:label1.Click事件我这样做:

在Form2中:

private void label1_MouseClick(object sender, MouseEventArgs e)
    {
        Form1 f1 = new Form1();
        Label name = ((Label)sender);
        f1.getInfoLabel(name);
    }

好的,每个人都在这里工作,但在那里:

在Form1中:

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
    }

有帮助吗?请。

答案

代替

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);
}

以上是关于当我从另一个表单调用方法时,控件不会更改颜色或文本的主要内容,如果未能解决你的问题,请参考以下文章

检测对表单控件中文本的所有更改(由用户进行)

表单之间的交互——如何将一个表单的控件从另一个表单更改?

从另一个更改编辑 mfc 控件文本

当我从另一个调用接口方法时,Spring Boot(Java)中出现以下错误

每次更改文本时,CStatic都不会失效

Tailwind CSS 更改占位符选项的文本颜色