zoukankan      html  css  js  c++  java
  • 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;    

      }

    }

  • 相关阅读:
    移位运算符<<与>>
    在线颜色选择器
    CSS鼠标指针cursor样式
    JavaScript实现自定义右键菜单
    如何去掉ul和li前面的小黑点
    转载:利用本地存储实现记录滚动条的位置
    CSS中样式覆盖优先顺序
    断言类
    MQ发送定时消息
    看代码所学3
  • 原文地址:https://www.cnblogs.com/xihong2014/p/4420183.html
Copyright © 2011-2022 走看看