首页 > 代码库 > 接口多态实现窗体传递

接口多态实现窗体传递

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

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

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

接口多态实现窗体传递