多线程+分层的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);

实际上该解决方案就是用到类的引用,窗体类同样可以创建引用,并将创建的引用通过构造方法传递。

 

 

posted @ 2013-03-26 11:24  苍云古齿  阅读(305)  评论(0)    收藏  举报