窗口传值Delegate

Posted stoneg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了窗口传值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);

 

以上是关于窗口传值Delegate的主要内容,如果未能解决你的问题,请参考以下文章

iOS delegate 实现页面之间的传值

iOS 中delegate的理解与使用(传值)

block和delegate的选择

IOS开发-UI学习-delegate(代理)的使用

使用 TabBar 和 NavBar 在 App Delegate 中配置窗口

如何从其他类(NSViewController 的子类)获取主窗口(App Delegate)?