可参考http://bbs.csdn.net/topics/390377875中使用new Action<>的使用方式,替代delegate的申明。

public delegate void MyInvokeWarn(bool para);

public delegate void MyInvoke(Control control,string str);

//单个参数

public void enableWarn1(bool para)

{

  if (panelWarn1.InvokeRequired)

  {

    MyInvokeWarn _myinvoke = new MyInvokeWarn(enableWarn1);

    panelWarn1.Invoke(_myinvoke, new object[] { para });

  }

  else

  {

    panelWarn1.Visible = para;

  }

}

//两个参数

public void printMsg(Control control,string msg)

{

    if (control.InvokeRequired)

    {

       MyInvoke _myInvoke = new MyInvoke((ct, v) => { ct.Text = v; });

       control.Invoke(_myInvoke,new object[] {control,msg});

     }

    else

    {

       control.Text = msg;

     }

}

在Winform开发中,如果在多线程中操作某一个控件的赋值的时候

//先声明一个委托

public delegate void SetControlTextDelegate(Control control);

//设置控件的方法

public void SetControlText(Control control, string value)

{

  if (control.InvokeRequired)

  {

  //使用委托赋值

     control.Invoke(new SetControlTextDelegate((ct, v) => { ct.Text = v; }), new object[] { control, value });     }

  else

  {

     control.Text = value;

  }

}

c# winform委托的使用的更多相关文章

  1. Winform 委托窗体传值

    有窗体Form1和窗体Form2,单击Form1按钮弹出Form2,单击Form2吧Form2的textBox控件文本传给Form1的label控件. 窗体1里: 实例化Form2,注册Form2的事 ...

  2. [WinForm]委托应用①——窗口之间方法/控件调用

    不传参数 第二窗口:public partial class Form2 : Form { /// <summary> /// 定义委托 /// </summary> publ ...

  3. 用winform程序来了解委托和事件

    一.浅谈委托 如果有个过winform 和webform 程序开发的小伙伴一定有个这样的感觉吧,点击Button直接就执行了那个方法,到此他是怎么实现了的呢,大家有考虑过没有? 回到正题,什么是委托呢 ...

  4. 在WinForm中使用委托来在其他线程中改变控件的显示

    假设winform中有两个控件: 1.ListView用来显示进度的文本提示,ID:listView_progressInfo 2.ProgressBar用来显示进度,ID:progressBar1 ...

  5. WinForm中 事件 委托 多线程的应用

    WinForm中 事件 委托 多线程的应用[以一个下载进度条为例] 第一步:首先我们创建一个winfor的项目 第二步:我们建一个窗体在一个窗体里面 打开一个另外的窗体 另外的窗体有一个按钮 点击后就 ...

  6. Winform跨窗体操作控件(使用委托)

    Winform跨窗体操作控件是winform开发中很常见的形式,最常见且简单有效的方式便是使用委托的方式来进行操作,下面我将通过一个小实例来说明如何使用委托跨窗体实现控件操作. 实例介绍:两个窗体,F ...

  7. 模拟winform里的控件的事件和委托机制

    参考:.NET 中的委托 委托的两大用处 1.委托可以实现方法作为参数进行传递,如 /// <summary> /// the English speaker. /// </summ ...

  8. C# winform窗体间传值(使用委托或事件)

    窗体间传值 今天得空,刚好看到网上好多人再找winform窗体间传值的问题,由于昨天项目的优化的感觉不错,就写了个C# winform窗体间传值的demo,希望能给需要的人的带来帮助: 工程的源代码地 ...

  9. winform两个窗体之间传值(C#委托事件实现)

    委托 定义一个委托,声明一个委托变量,然后让变量去做方法应该做的事. 委托是一个类型 事件是委托变量实现的 经典例子:两个winform窗体传值 定义两个窗体:form1和form2 form1上有一 ...

随机推荐

  1. 【收藏】SQL多行变一列

    CREATE TABLE DEPT (DeptNo INT IDENTITY(1, 1)NOT NULL ,  Country VARCHAR(50) ,  Location VARCHAR(50) ...

  2. nginx模块记录

    1. ngx_http_ssl_module 让Nginx可以支持HTTPS的模块 (1)ssl on | off; #是否开启ssl功能 (2)ssl_certificate file; #当前虚拟 ...

  3. wordpress启动

    wordpress启动 公司需要使用到wordpress 特意下载源码进行研究,才发现里面都是.php文件,需要运行php而不得不去配置运行环境 步骤如下 Wampserver32 使用的360安装的 ...

  4. Qt:表格 tableWidget

    1.设置行数和列数 //设置行数 tableWidget->setRowCount(); //设置列数 tableWidget->setColumnCount(); 2.隐藏表头 tabl ...

  5. 记录一个bootstrap因js加载顺序导致的问题(tstrap-table-mobile.min.js:7 Uncaught TypeError: Cannot read property 'defaults' of undefined)

    问题描述: 网上找了会没看到答案,然后看了下源码,发现也没有问题,想到js加载的顺序,改了下,发现问题没了. 正确的顺序: 我之前把 <script src="/js/plugins/ ...

  6. LeetCode OJ:Maximal Rectangle(最大矩形)

    Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing all ones and ...

  7. 一道简单的JavaScript面试题

    好久没更新博客了,随便写点东西吧. 自从工作之后就特别忙,忙的过程中有时候挺迷茫的,可能是大多数时候写的都是简单的业务代码,很久没好好充电了.最近一直在零碎的上班路上等电梯时间里面学习<图解HT ...

  8. node 适合 5000 人同时在线左右的 游戏开发

    游戏开发性能的一些讨论 上面这个问题是在游戏上线前的一个性能顾虑 (但他确实是node多进程通讯间的一个比较麻烦的问题,数据一大就会出现性能上的瓶颈) 我们项目(手游)已经上线了,单服最高同时在线4. ...

  9. SPI总线协议介绍

    http://blog.csdn.net/ce123_zhouwei/article/details/6897293 https://www.cnblogs.com/yangguang-it/p/71 ...

  10. 开启 Android WebView 的安全浏览模式

    Hybrid App(混合式开发)已经是每一个商业应用都会使用的开发手段.其最大的优势就是将一些可动态更新的内容页面使用 H5 开发,然后借用移动端原生系统提供的 WebView 控件加载进来.这种方 ...