• 接口多态实现窗体传递


        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));   //调用主窗体的方法

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

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

  • 相关阅读:
    装饰者模式
    Linux top命令
    Java基础--单例类创建和测试
    Mybatis动态sql
    bmp图片格式及读取
    自然语言处理--nltk安装及wordnet使用详解
    Spring注解
    struts2 + spring + mybatis 框架整合
    Java基础--ThreadLocal
    Java基础--压缩和解压缩gz包
  • 原文地址:https://www.cnblogs.com/ianism/p/4245813.html
Copyright © 2020-2023  润新知