今天的工作中突然用到這個了,不過以前沒有接觸過呢!不過,在有經驗的同事的幫助下,這個問題也很快解決了。具體可以分為以下幾種方式:
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();
}