13

私はMDIフォームを持っています。この MDI フォーム内で、次を使用していくつかの子フォームを開くことができます。

この中にありますMainForm

Form1 f1 = new Form1;
f1.MdiParent = this; //this refers to MainForm (parent)
f1.Show();

これは期待どおりに機能します。

しかし、今、私は子フォーム (Form1 -> f1) にいる間に、別のフォームを子として開きたいのですが、キーワードMainFormを使用すると を参照します。で新しいフォームを開き、に設定するにはどうすればよいですか?thisf1f1MdiParentMainForm

4

5 に答える 5

41

次から最初の子の親フォームを割り当ててみてください。

Form2 f2 = new Form2;
f2.MdiParent = this.ParentForm; //this refers to f1's parent, the MainForm
f2.Show();

お役に立てれば。

于 2011-11-01T13:19:31.603 に答える
12

2 番目のフォームが f2 であるとします。次に、MDI 親フォームで新しいフォーム f2 を作成するためのフォーム f1 のコードは次のようになります。

Form2 f2 = new Form2;
f2.MdiParent = this.MdiParent;
f2.Show();
于 2011-11-01T13:18:41.607 に答える
5

さて、リストされた「解決策」について議論するつもりはありません...しかし、リクエストを正しく理解していて、上記の解決策を試してもうまくいかない場合は、次のようにします....

Form2 f2 = new Form2();
        f2.MdiParent = MDIParent1.ActiveForm;
        f2.Show();
于 2012-11-01T06:02:09.327 に答える
0

2 番目のフォームが frm2 であると仮定します。次に、MDI 親フォームで新しいフォーム frm2 を作成するためのフォーム frm1 のコードは次のようになります。 新しいオブジェクトを作成してから、再びデータを取得する mdiparent フォームを解決する フリーズ ディスポーズ フォーム

Dim dru as New frm2 '// another form call
dru = New frm2
dru.mdiparent = frm1 '// main forms
dru.show()
于 2020-08-21T02:59:07.590 に答える