跨线程访问窗体控件

public void SetText<T>(T control, string text) where T : Control
{
    if (control.InvokeRequired)
        control.Invoke(new Action<Control, String>(SetText), new Object[] { control, text });
    else
        control.Text = text;
}
 
///////////////
//委托
delegate void SetEnableCallback(System.Windows.Forms.Control objCtrl, bool enable);
//声明
private void _SetText<TObject>(TObject objCtrl, string text)
where TObject : System.Windows.Forms.Control
{
  if (objCtrl.InvokeRequired)
  {
    SetTextCallback d = new SetTextCallback(_SetText);
    this.Invoke(d, new object[] { objCtrl, text });
  }
  else
  {
    objCtrl.Text = text;
  }
}
//调用
public int TotalNum
{
set { _SetText<TextBox>(this.txt_Total, value.ToString()); }
}
posted on 2013-04-21 08:08  武胜-阿伟  阅读(224)  评论(0编辑  收藏  举报