C# 调用父窗体的方法

网络上有几种方法,先总结如下:
调用窗体(父):FormFather,被调用窗体(子):FormSub


方法1: 所有权法
         //FormFather:
         //需要有一个公共的刷新方法
         public void Refresh_Method()
         {
                 //...
         }
         //在调用FormSub时,要把FormSub的所有者设为FormFather
         FormSub f2 = new FormSub() ;
         f2.Owner = this;
         f2.ShowDialog() ;


         //FormSub:
         //在需要对其调用者(父)刷新时
         FormFather f1 ;
         f1 = (FormFather)this.Owner;
         f1.Refresh_Method() ;


方法2:自身传递法
         //FormFather:
         //需要有一个公共的刷新方法
         public void Refresh_Method()
         {
                 //...
         }
         FormSub f2 = new FormSub() ;
         f2.ShowDialog(this) ;


         //FormSub:
         private FormFather p_f1;
         public FormSub(FormFather f1)
         {
                 InitializeComponent();
                 p_f1 = f1;
         }
         //刷新时
         p_f1.Refresh_Method() ;


方法3:属性法
         //FormFather:
         //需要有一个公共的刷新方法
         public void Refresh_Method()
         {
                 //...
         }
         //调用时
         FormSub f2 = new FormSub() ;
         f2.P_F1 = this;
         f2.Show() ;

         //FormSub:
         private FormFather p_f1;
         public FormFather P_F1
         {
                 get{return p_f1;}
                 set{p_f1 = value;}
         }
         //刷新时
         p_f1.Refresh_Method() ;


方法4:委托法
         //FormFather:
         //需要有一个公共的刷新方法
         public void Refresh_Method()
         {
                 //...
         }
         //调用时
         FormSub f2 = new FormSub() ;
         f2.ShowUpdate += new DisplayUpdate(Refresh_Method) ;
         f2.Show() ;


         //FormSub:
         //声明一个委托
         public delegate void DisplayUpdate();
         //声明事件
         public event DisplayUpdate ShowUpdate;
         //刷新时,放在需要执行刷新的事件里

         if(ShowUpdate!=null)     ShowUpdate();

         //子窗体提交后
         private void btnOK_Click(object sender, EventArgs e)
         {
                 this.DialogResult = DialogResult.OK;
                 this.Close();
         }


         //判断子窗体
         if(form.ShowDialog() == DialogResult.OK)
         {
                  刷新父窗体中的DataGRIDVIEW数据
         }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值