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