多线程+分层的WinForm(C#.NET)程序修改窗体控件
问题描述
上一篇文章讲了多线程的WinForm怎么修改窗体控件,然而有时我们的程序是分层的,比如我的监听线程不放在form中,而放在了另一个命名空间下的Business类中,这时,监听线程想修改form中的richtextbox,却调用不到AppendResultText()。
注:不懂AppendResultText()的请先查看:http://www.cnblogs.com/thomas9562/articles/2982095.html
解决方案
我的主窗体名字叫mainform,这个窗体也是个类,是类就能定义引用!

所以在Business类中,申明一个成员变量如下
class Business { private MainForm mainform;
然后修改Business类的构造方法
public Business() { } public Business(MainForm mainform) { this.mainform = mainform; }
并且在主窗体mainform调用Business类时使用该构造方法
private void MainForm_Load(object sender, EventArgs e) { artHandler = new AppendResultTextHandler(AppendResultText); b= new Business(this); }
然后就可以在Business类中调用AppendResultText()啦。方法是
this.mainform.AppendResultText("接收成功", true);
实际上该解决方案就是用到类的引用,窗体类同样可以创建引用,并将创建的引用通过构造方法传递。

浙公网安备 33010602011771号