码迷,mamicode.com
首页 > Windows程序 > 详细

C# Invoke用法

时间:2019-11-23 13:06:19      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:使用   hand   pre   rgs   事件   class   程序   font   属性   

假如winform构建GUI界面时,如果要在控件事件中响应函数中改变控件的属性,例如:某个按钮上的文本原先叫“打开”,单击之后按钮上的文本显示“关闭”,初学者往往会想当然地这么写:

void ButtonOnClick(object sender,EventArgs e)

{

    button.Text="关闭";

}

  

这样的写法运行程序之后,可能会触发异常,异常信息大致是“不能从不是创建该控件的线程调用它”。

我们可以使用两种方法去解决这个问题
this这种(Invoke方法需要创建一个委托。你可以事先写好函数和与之对应的委托)
1.使用委托的方式
void ButtonOnClick(object sender,EventArgs e)
{
   this.Invoke(new EventHandler(delegate{

  button.Text = ‘关闭‘;

})); }

2.C#3.0以后有了Lamda表达式,使用以下这种方法
void ButtonOnClick(object sender,EventArgs e)
{
  
 this.Invoke(new Action()) =>
{
  button.Text = ‘关闭‘;
}));
}




C# Invoke用法

标签:使用   hand   pre   rgs   事件   class   程序   font   属性   

原文地址:https://www.cnblogs.com/chen1997/p/11916926.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!