• 发布订阅模式的非委托实现


    主窗体向多个窗体传值

    主窗体中的代码如下:需要写一个接口,让所有子窗体访问,并且实现接口中的方法

    namespace 发布订阅模式的非委托实现
    {
        public partial class Mainfrm : Form
        {
            public List<IchildFrm> childFrmList = new List<IchildFrm>();
            public Mainfrm()
            {
                InitializeComponent();
            }
    
            private void btnsend_Click(object sender, EventArgs e)
            {
                //当点击发送消息按钮时,则需要遍历 那个关注消息变化的子窗体集合
                //调用集合中每个元素的一个方法
                if (childFrmList==null)
                {
                    return;
                }
                foreach (var item in childFrmList )
                {
                    item.GetText(this.txtMsg.Text);
                }
            }
    
           
        }
    }

    接口中的代码如下:

    namespace 发布订阅模式的非委托实现
    {
        public  interface IchildFrm  //接口
        {
            void GetText(string txt);//所有窗体都实现这个方法
           
        }
    }

    子窗体中的代码如下:(多个子窗体也是一样)

    namespace 发布订阅模式的非委托实现
    {
        public partial class Childfrm1 : Form,IchildFrm //所有子窗体都继承IchildFrm
        {
            public Childfrm1()
            {
                InitializeComponent();
            }
    
            public void GetText(string txt)
            {
                this.txtMsg.Text = txt;
            }
        }
    }

    此时还需要一个窗体来管理主窗体和子窗体,当加载该窗体时,将把主窗体和子窗体显示出来。代码如下

    namespace 发布订阅模式的非委托实现
    {
        public partial class MasterFrm : Form
        {
            public MasterFrm()
            {
                InitializeComponent();
            }
    
            private void MasterFrm_Load(object sender, EventArgs e)
            {
                Mainfrm Mfrm = new 发布订阅模式的非委托实现.Mainfrm();
                Mfrm.Show();
                Childfrm1 cfrm1 = new Childfrm1();
                //子窗体显示之前要关注主窗体的信息
                Mfrm.childFrmList.Add(cfrm1);
                cfrm1.Show();
            }
        }
    }
  • 相关阅读:
    好元素(good)
    三条线 (Standard IO)
    计数排序-自然顺序Comparable
    贪心算法之田忌赛马
    bzoj3400
    bzoj1704
    CF Round #456 (Div. 2)
    LA3029
    bzoj3000
    bzoj3623
  • 原文地址:https://www.cnblogs.com/xiaoyaohan/p/9714570.html
Copyright © 2020-2023  润新知