• 窗口传值Delegate


    • 主窗口实现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);
  • 相关阅读:
    顺序表代码(指针实现)
    顺序表代码
    爬虫问题之Unknown command: crawl
    MongoDB的启动
    python复制文件到文件夹中
    .content和.text的区别
    ip协议,IP,子网掩码,ping命令是什么
    网络通信流程
    tcp和udp得区别
    flask中的目录解析
  • 原文地址:https://www.cnblogs.com/stoneG/p/8979339.html
Copyright © 2020-2023  润新知