我有一個MDI父窗口,其中可以包含特定子項的多個實例,將其稱爲frmChild。現在,當從父點擊一個特定的控制,我需要得到有效frmChild和從frmChild調用特定的方法從父項調用特定MDI子項的方法
下面是什麼,我想實現的圖像(獲取活動的MDI子和調用從該類特定方法):
a busy cat http://i47.tinypic.com/aurv7.jpg
現在每個frmChild被實例化:
private void newFileToolStripMenuItem1_Click(object sender, EventArgs e)
{
frmNewDocument = new frmNewDocument();
frmNewDocument.MdiParent = this;
frmNewDocument.Show();
}
當我想要調用從一個方法活躍frmChild,我想下面和我堅持:
private void saveFileToolStripMenuItem1_Click(object sender, EventArgs e)
{
/* get active MDI child*/
Form frmActiveNewDocument = this.ActiveMdiChild;
/* make sure MDI child is a "New Document" type form */
if (frmActiveNewDocument.GetType() == frmNewDocument.GetType())
{
/* invoke a method from active frmChild here */
}
}
我仍然在學習OOP和相信這是一些原則。如果可以在文章中提到,那也會很棒。
**注意:我讀過干擾frmChild是解決此問題的最佳方法,因此主窗體不需要在每個frmChild中進行挖掘,因此我創建了一個frmChild使用的接口,它是:**
public interface NewFileFormInterface
{
void saveFile();
}
現在,saveFile的()是我想從主,這是在frmChild實現調用的方法。
對這個問題和我可以研究的一些關鍵字的任何幫助將是偉大的。
TIA!
感謝您的回覆。雖然這有助於解決問題,但有沒有一種方法可以使用界面而不是實際的表單?對不起,如果這沒有意義,但我現在只是困惑。我想盡量保持一切儘可能鬆散。 – brazc0re
是的,假設子窗體實現了該接口,那麼使用'NewFileFormInterface'而不是'frmNewDocument'。 – Tergiver
完美工作。是的所有** frmNewDocument **類實現** NewFileFormInterface **感謝您的鏈接。我會給他們一個閱讀。 – brazc0re