c# winform 子窗体访问父窗体中的方法和变量

今天的工作中突然用到这个了,不过以前没有接触过呢!不过,在有经验的同事的帮助下,这个问题也很快解决了。具体可以分为以下几种方式:

1、在父窗体中构造子窗体对象时,将父窗体传递过去:

如:FrmSub frm=new FrmSub(this);//this代表父窗体

2、将父窗体中要访问的变量和方法修改为public

3、在子窗体类中定义一个父窗体的全局变量:

如:private dynamic m_parentContainer;//使用dynamic可以动态的识别该变量的类型

4、添加引用Microsoft.CSharp.dll

5、在要访问地方直接通过m_parentContainer.变量名或m_parentContainer.方法名访问即可

  if (m_ParentContainer.mFrm2BaseLibDataEdite == null || m_ParentContainer.mFrm2BaseLibDataEdite.IsDisposed)//mFrm2BaseLibDataEdite为父窗体变量
                {
                    m_ParentContainer.mFrm2BaseLibDataEdite = new frm2BaseLibDataEdite();
                    if (m_ParentContainer.mFrm2BaseLibDataEdite.IsDisposed == false)
                    {
                        m_ParentContainer.fnAddChildFormToMDIForm(m_ParentContainer.mFrm2BaseLibDataEdite);//fnAddChildFormToMDIForm()为父窗体方法
                        m_ParentContainer.mFrm2BaseLibDataEdite.Show();
                    }
                }
                else {
                    m_ParentContainer.mFrm2BaseLibDataEdite.WindowState = FormWindowState.Maximized;
                    m_ParentContainer.mFrm2BaseLibDataEdite.Activate();
                    m_ParentContainer.mFrm2BaseLibDataEdite.Show();
                }

原文地址:https://www.cnblogs.com/dyllove98/p/3184753.html