c# winform委托的使用
可参考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;
}
}
最新文章
- OpenCASCADE General Transformation
- Play Framework 完整实现一个APP(十)
- HttpModule &; HttpHandler
- Codeforces Round #143 (Div. 2) E. Cactus 无向图缩环+LCA
- socket 粘包问题(转)
- TCP调试助手
- iOS学习笔记(01) - 泛型
- unity中调用其他脚本函数的方法(小白之路)
- [Spark內核] 第41课:Checkpoint彻底解密:Checkpoint的运行原理和源码实现彻底详解
- 基于阻塞队列的生产者消费者C#并发设计
- 蒙特卡诺近似与PBM
- python编程从入门到实践 alien invasion 项目源码
- 学习笔记---json和xml区别
- 温顾知新系列-JAVA网络编程系统(1)- 流
- Python2和Python3安装注意事项
- win10 hyper-v 外网设置
- 软件工程项目之摄影App(总结)
- Android数据存储五种方式
- 2017-2018-2 20155234『网络对抗技术』Exp6:信息收集与漏洞扫描
- stat用法:获取文件对应权限的数字