在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;
}
}
那么问题来了,如果我想在多线程中,再设置控件的“Font”,“Enabled”,“Size”……或者设置向ListView添加ListViewItem之类的…… 岂不每个不同类型的控件、不同类型的属性,我都要写1个Delegate+1个方法?求教各位大神,你们平时都怎么处理多线程中的控件赋值或操作?
我这种方式是“正道”吗? 请大神们指教,感谢!
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;
}
}
那么问题来了,如果我想在多线程中,再设置控件的“Font”,“Enabled”,“Size”……或者设置向ListView添加ListViewItem之类的…… 岂不每个不同类型的控件、不同类型的属性,我都要写1个Delegate+1个方法?求教各位大神,你们平时都怎么处理多线程中的控件赋值或操作?
我这种方式是“正道”吗? 请大神们指教,感谢!
winform多线程
解决方案 »
- C# winform 怎么利用reportViewer 报表控件插入外部图片
- vs2008 c#下的menu如何应用(winform)
- datagridview多表头时表头文字重叠
- 如何在C#中调用autocad打开上传的AUTOCAD图(特急)
- 请教代码疑惑。
- 非一般上传问题,请教高手解决的办法,分不够再加
- 在WinForm中如何把crystalReportViewer中的报表,用PrintPreviewDialog显示其打印打印预览?
- WebServices问题请教
- timer1.Tick+=new EventHandler(aa);
- zedgraph画图,有谁知道这是什么情况吗?
- C#与SQL Server 2008
- C#窗体 webBrowser控件赋值后无法编辑~~~~~
Lambda表达式我还真没用过。
请问您平时都怎么处理呢?(如果能有代码示例或参考资料的话,那就更加感激了~~嘿嘿)
=>
control.Invoke(new Action<Control, string>((ct, v) => { ct.Text = v; }), new object[] { control, value });
然后委托申明去掉