繁体   English   中英

C#无法从另一个类更改窗体的组件

[英]C# Unable To Change Components Of Form From Another Class

在开始之前,我想说的是,我已经在互联网上寻找答案了很长时间,并且无法找到解决方案。 我知道如何解决此问题,但它不起作用。

这就是我所知道的:假设我有一个标签和另一个类,如果我想操纵标签,我需要创建一个带有标签的表单的实例,用该表单调用新类的方法,然后调用更改标签的表单类中的方法。 这就是我所拥有的。

这是来自表单类

    private void button1_Click(object sender, EventArgs e)
    {
        Question steve = new Question(1, 1, "nothing", new string[] {});
        steve.Show(new Form1(), "I win");
    }

    public void ChangeLabel(string s)
    {
        this.lblTest.Text = s;
    }

这是Question类

    public void Show (Form1 f, string str)
    {
        f.ChangeLabel(str);
    }

从语法上讲,这是正确的,并且在运行调试器lblTest.Text时,其效果等同于“我赢了”,但是窗体上没有任何视觉变化。

PS:我在读高中,还在学习C#,因此,如果我在解释或代码中有任何错误,请指出。 另外,不管Question构造函数,它现在都没有用。

谢谢

不行 您无需创建表单的新实例。

您必须使用this关键字传递当前实例:

private void button1_Click(object sender, EventArgs e)
{
    Question steve = new Question(1, 1, "nothing", new string[] {});
    steve.Show(this, "I win");    //change it
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM