通过从类调用到主窗体来更新控件和刷新窗体

Sum*_*mit 1 c# winforms

我想在其他班级做某事时更新文本框。让我把我的代码:

表格1.cs

namespace TestApp
{
    public partial class Form1 : Form
    {
        CalledClass call = new CalledClass();

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            call.Call_UpdateBox();
        }

        public void UpdateBox()
        {
            textBox1.Text = "hello";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

CalledClass.cs

namespace TestApp
{
    class CalledClass
    {
     public void Call_UpdateBox()
        {
            Form1 mainform = new Form1();

            //do looping for doing some tasks here and update textbox every time
            mainform.UpdateBox();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当单击主窗体上的按钮时,调用 CalledClass 中的 Call_UpdateBox 函数,我必须在其中执行一些循环并在更新主窗体中的文本框之间进行。虽然如果我在调试模式下看到它的值,文本框会得到更新,但它在主窗体上仍然是空白的。请建议。提前谢谢。

Don*_*ott 5

您正在声明 的新实例Form1,而不是引用已经存在的实例。你应该:

namespace TestApp
{
    public partial class Form1 : Form
    {
        CalledClass call = new CalledClass();

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            call.Call_UpdateBox(this);
        }

        public void UpdateBox()
        {
            textBox1.Text = "hello";
        }
    }
}
namespace TestApp
{
    class CalledClass
    {
     public void Call_UpdateBox(Form1 Sender)
        {
            //do looping for doing some tasks here and update textbox every time
            sender.UpdateBox();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)