0

这是我的示例代码:

//------this is just GUI Form which is having RichTextBox (Access declared as Public)
//

public partial class Form1 : Form
{
   public void function1()
   {
      ThreadStart t= function2;
      Thread tStart= new Thread(t);
      tStart.Start();
   }

   public void function2()
   {
   //Calling function3 which is in another class
   }
}


//------this is just Class, not GUI Form
class secondClass: Form1
{

   public void function3()
   {
      Form1 f =new Form1();
      //Updating the RichTextBox(which is created in Form1 GUI with Public access)
      f.richTextBox1.AppendText("sample text");
   }

}

我尝试通过调用richTextBox1控件和我的代码运行没有错误,但richtextbox没有得到更新。

我必须做什么才能richTextBox从另一个类函数中频繁更新我的状态?

4

2 回答 2

2

你的问题在这里:

public void function3()
{
Form1 f =new Form1();
//Updating the RichTextBox(which is created in Form1 GUI with Public access)
f.richTextBox1.AppendText("sample text");
}

您创建表单的另一个实例并对其进行更改richTextBox- 而不是初始实例。

要完成这项工作,您应该使用此处Invoke所示的方法在其代码隐藏类中设置 UI 控件的值。来自其他类的函数应该为任何输入和输出值使用参数。

于 2012-12-26T13:18:47.390 回答
0

只需将您的 RichTextBox 从 Form1 传递给 function3

    //function inside form1
    public void function2() {
        function3(this.richTextBox1);
    }

然后使用调用从另一个线程/类更新richTextBox

    //function in another thread
    public void function3(RichTextBox r)
    {
        r.InvokeIfRequired((value) => r.AppendText(value), "asd");
    }
于 2012-12-26T13:28:12.593 回答