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;    

  }

}

 

转载于:https://www.cnblogs.com/xihong2014/p/4420183.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值