C#无法更改其他类的窗体组件

本文关键字:窗体 组件 其他 | 更新日期: 2023-09-27 18:27:58

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

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

这是来自表单类

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

这是问题类

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

从语法角度来看,这是正确的,并且在运行调试器lblTest.Text时等于"我赢了",但表单上没有视觉变化。

附言:我正在上高中,还在学习C#,所以如果我在解释或代码中有任何错误,请指出。另外,忽略Question构造函数,它现在没有用。

感谢

C#无法更改其他类的窗体组件

否!您不需要创建表单的新实例。

您必须使用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
}