菜鸡学习笔记--WinForm控件的异步调用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了菜鸡学习笔记--WinForm控件的异步调用相关的知识,希望对你有一定的参考价值。

  在一WinForm项目中,除了窗口类之外的其他类要直接使用窗口控件是比较困难的,因为控件对象不是静态的(static),但是又不能去Designer去修改空间的属性。而且还有需要控件值自动改变的情况。此时需要运用到事件(Event)的使用

例:

在项目适当位置任意声明一个委托,参数类型与控件一致

public delegate void TestDelegate(string msg);


声明事件,并且定义事件访问器:

public event TestDelegate TestEvent{
{
    add
    {
        TestEvent += value;
    }
    remove
    {
        TestEvent -= value;
    }
}

 

给事件绑定控件异步调用的方法:

TestEvent += txtMethod;

public void txtMethod(string msg)//控件异步调用的具体方法
{
    TestDelegate del = delegate(string m)
    {
        txtContent.Text += m;
    }
    txtContent.Invoke(del, msg);
}


当触发事件TestEvent时此txt控件就能输出msg的值:

string msg = "This is a Test";
if(TestEvent != null)//触发事件
    TestEvent(msg);

初次学习,还得多加练习。

没错就是从张子阳老师的网络编程那篇文章里学到的:http://www.cnblogs.com/JimmyZhang/archive/2008/09/07/1286299.html

 

以上是关于菜鸡学习笔记--WinForm控件的异步调用的主要内容,如果未能解决你的问题,请参考以下文章

wpf中调用winform用户控件的方法

c# winform中异步执行WebRequest后返回值

用Html5/CSS3做Winform,一步一步教你搭建CefSharp开发环境(附JavaScript异步调用C#例子,及全部源代码)上

c#winform不是用this.dispatcher.invoke来异步更新ui吗?

Winform异步初始化UserControl的问题

winform的窗体控件可以用线程直接调用吗