• 接口多态实现窗体传递


        public interface IFillAreas
        {
            void FillAreas(string ids, string names);  //接口中定义方法签名
        }
        public partial class FrmPerson : Form,interfaces.IFillAreas     //窗体继承于接
            private void btnChoice_Click(object sender, EventArgs e)
            {
                FrmAreas frm = new FrmAreas((interfaces.IFillAreas)this);    //将窗体强转为接口类型,进行传递
                frm.ShowDialog();
            }
    
    
            public void FillAreas(string ids, string names)    //接口方法的具体实现
            {
                this.txtDistrict.Text = names;
                this.txtDistrict.Tag = ids;
            } 
            interfaces.IFillAreas Ifrm;   //定义一个接口类型
    
            public FrmAreas(interfaces.IFillAreas Ifrm)   //次窗体构造函数接受主窗体传回的接口类型的窗体
            {
                InitializeComponent();
                this.Ifrm = Ifrm;
            }
    Ifrm.FillAreas(aids.ToString().Substring(0, aids.Length - 1), anames.ToString().Substring(0, anames.Length - 1));   //调用主窗体的方法

    此方法的好处在于实现了多态,次窗体接受主窗体传回的接口类型窗体,从而只能调用接口方法,而保护了原主窗体的公有成员。

    缺点在于本质还是一个窗体,所以还是可以将接口类型窗体强转为窗体,从而调用窗体的公有成员。

  • 相关阅读:
    django报错问题解决
    django2-项目实战
    django1-环境搭建与开始
    python学习-模块与包(九)
    逆水行舟,不进则退
    待学习规划内容
    越来越强大法则
    windows下安装scoop
    pytest+allure生成测试报告
    Angular vscode 调试
  • 原文地址:https://www.cnblogs.com/ianism/p/4245813.html
Copyright © 2020-2023  润新知