可参考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;    

  }

}

 

相关文章:

  • 2021-09-08
  • 2022-02-17
  • 2022-12-23
  • 2021-06-09
  • 2021-11-20
  • 2021-09-08
  • 2021-06-07
  • 2022-03-01
猜你喜欢
  • 2021-10-27
  • 2021-08-27
  • 2022-12-23
  • 2022-12-23
  • 2021-07-23
相关资源
相似解决方案