からの特定の子の複数のインスタンスを含むことができるMDI親ウィンドウがあります。これをfrmChildと呼びます。親から特定のコントロールがクリックされたときに、アクティブなfrmChildを取得し、frmChildから特定のメソッドを呼び出す必要があります。
以下は、私が達成しようとしていることのイメージです(アクティブなMDI子を取得し、そのクラスから特定のメソッドを呼び出します)。
これで、各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!