码迷,mamicode.com
首页 > 其他好文 > 详细

窗口传值Delegate

时间:2018-05-02 13:13:37      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:代码   声明   cat   thread   spl   invoke   window   oid   span   

  • 主窗口实现Handler
private void DisplayMessageHandler(string strmes, Color color)
        {
            label1.Text = strmes;
            label1.BackColor=color;
            label1.Refresh();
            Application.DoEvents();
        }
private void DisplayMessageDelegate(string msg, Color color)
        {
            if (this.InvokeRequired)    //are we running on a secondary thread
            {
                //Make arguments for delegate
                Object[] args = new Object[] { msg, color };

                //Make the delegate
                DisplayMessage dm = new DisplayMessage(DisplayMessageHandler);
                this.Invoke(dm,args);
            }
            else
            {
                DisplayMessageHandler(msg,color);
            }
        }
private void OnUpdateWindow(string msg, Color color)
        {
            DisplayMessageDelegate(msg, color);
        }
  • 在主窗口代码中声明委托
private delegate void DisplayMessage(string msg, Color color);
  • 在副窗口中声明委托
public delegate void UpdateWindowDelegate(string msg, Color color   );
        public static UpdateWindowDelegate UpdateWindow;
  • 在副窗口中调用委托
private void UpdateMsg(string msg, Color color)
        {
            UpdateWindowDelegate uw = UpdateWindow;
            if (uw != null) UpdateWindow(msg, color);
        }
  • 在主窗口中声明副窗口中的委托
Form2.UpdateWindow += new Form2.UpdateWindowDelegate(OnUpdateWindow);

 

窗口传值Delegate

标签:代码   声明   cat   thread   spl   invoke   window   oid   span   

原文地址:https://www.cnblogs.com/stoneG/p/8979339.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!