网络上有几种方法,先总结如下:
调用窗体(父):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数据
       }

【转】C# 子窗体如何调用父窗体的方法的更多相关文章

  1. vue:子组件通过调用父组件的方法的方式传参

    在本案例中,由于子组件通过调用父组件的方法的方式传参,从而实现修改父组件data中的对象,所以需要啊使用$forceUpdate()进行强制刷新 父组件: provide() { return { s ...

  2. uni-app 子组件如何调用父组件的方法

    1.在父组件methods中定义一个方法: changeType:function(type){ this.typeActive = type; alert(type); } 2.在父组件引用子组件时 ...

  3. winform打开子窗体后,在子窗体中刷新父窗体,或者关闭子窗体刷新父窗体

    winform打开子窗体后,在子窗体中刷新父窗体,或者关闭子窗体刷新父窗体,搜集了几个方法,列举如下: 一 . 所有权法 父窗体,名称为“fuForm”,在父窗体中有个公共刷新方法,也就是窗体数据初始 ...

  4. window.opener调用父窗体方法的用法

    应用实例:        function BindWindowCloss() {            $(window).bind('beforeunload', function () {    ...

  5. vue 子组件调用父组件的方法

    vue中 父子组件的通信: 子组件通过 props: { //子组件中写的. childMsg: { //字段名 type: Array,//类型 default: [0,0,0] //这样可以指定默 ...

  6. Vue子组件调用父组件的方法

    Vue子组件调用父组件的方法   Vue中子组件调用父组件的方法,这里有三种方法提供参考 第一种方法是直接在子组件中通过this.$parent.event来调用父组件的方法 父组件 <temp ...

  7. react 中子组件调用父组件的方法

    1.在父组件中定义方法,并绑定在子组件上 // 在子组件中调用父组件中的方法 import React,{Component} from 'react'; import Child from './c ...

  8. mui---子页面主动调用父页面的方法

    我们在做APP的时候,很多时候会有这样的功能需求,例如:登录,充值,如果登录成功,或充值成功后,需要更改当前页面以及父页面的状态信息,就会用到在子页面调用父页面的方法来实现:在子页面刷新父页面的功能. ...

  9. Vue中子组件调用父组件的方法

    Vue中子组件调用父组件的方法 相关Html: <!DOCTYPE html> <html lang="en"> <head> <meta ...

随机推荐

  1. 这些优化 Drupal 网站速度的超简单办法,你忽略了多少?

    “怎么样能让我的 Drupal 网站更快一些?”是我们最常遇到的一个问题.站点速度确实非常重要,因为它会影响你的 SEO排名效果.访客是否停留以及你自己管理网站所需要的时间. 今天我们就来看看那些通过 ...

  2. Android7.0 拨号盘应用源码分析(一) 界面浅析

    前言 android拨号盘的源码目录在package/app/Dialer 自7.0以后Incallui的源码直接放到了Dialer目录下,虽然在7.0以前incallui有自己独立的目录,但实际编译 ...

  3. 洛谷P2085 最小函数值(minval)

    P2085 最小函数值(minval) 218通过 487提交 题目提供者该用户不存在 标签堆高级数据结构 难度普及+/提高 提交该题 讨论 题解 记录 最新讨论 暂时没有讨论 题目描述 有n个函数, ...

  4. MyEclipse简单设置

    1.设置   安装完MyEclipse后,先设置工作空间的编码. Window—preferences—General--workspace—选择UTF-8编码 创建HTML的文件后,如果不是UTF- ...

  5. CSS垂直水平居中方法整理

    CSS定位中常常用到垂直居中,比如覆盖层上的弹框. 兼容性比较好的方法: <!DOCTYPE html PUBliC "-//W3C//DTD XHTML 1.0 Transition ...

  6. Solarwinds Orion NPM实战视频演示

    Orion Network Performance Monitor是全面的带宽性能监控和故障管理软件,能监控并收集来自路由器.交换机.服务器和其他SNMP设备中的数据,您可以直接从Web浏览器上观察您 ...

  7. sqlplus sys/system@'(description=(address_list=(address=(protocol=tcp)(host=192.168.11.199)(port=1521)))(connect_data=(service_name=byRuiy)))' as sysdba

  8. python md5

    import hashlib import os 简单的测试一个字符串的MD5值 src = 'teststring' print (hashlib.md5(src).hexdigest().uppe ...

  9. Ax Grid 的显示根据用户的需求动态排序。

    点击方向按钮上下移动记录. 设计思路. 以临时表TmpTable1举例. 在表中加一个real类型字段(eg:ColumnSeq)用于排序,给表建一个ColumnSeq字段的索引ColumnSeqId ...

  10. JS 和 CSS 的位置对其他资源加载顺序的影响

    JS 和 CSS 在页面中的位置,会影响其他资源(指 img 等非 js 和 css 资源)的加载顺序,究其原因,有三个值得注意的点: JS 有可能会修改 DOM. 典型的,可能会有 document ...