首页 > 其他 > 详细

窗口传值Delegate

时间:2018-05-02 12:09:49      阅读:188      评论:0      收藏:0      [点我收藏+]
  • 主窗口实现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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!