3

子を持つ MDI 親フォームを使用していますが、この親によって呼び出されたときに非常によく表示され、子フォームを次のように強化するために使用します

ChildForm child = new ChildForm();
child.IsMdiContainer= this;
child.Show();

親コントロールから呼び出されるとすぐにうまく機能しますが、親フォームの子ではない別のフォームからそれらを呼び出すと、メインの親の子ではなくなります。明らかな理由の1つは、その独立したフォームでそれらを強化するとchild.MDIParent = this; を使用することはできません。独立したフォームを親にする傾向があるため、私も試しました

MDIParentForm form = new MDIParentForm 

ChildForm child = new ChildForm();
child.IsMdiContainer= form ;
child.Show();

しかし、これも役に立たない代わりに、親を設定しようとしているフォームがMDIコンテナではないという例外がスローされ、これを試して変更します

MDIParentForm form = new MDIParentForm ;
form.IsMdiContainer= true;
ChildForm child = new ChildForm();
child.MDIParent = form ;
child.Show();

その結果、何も表示されません

方法はありますか........

4

4 に答える 4

8

別の子から子を作成するには、次のように記述します。

ChildForm sibling = new ChildForm();
sibling.MdiParent = this.MdiParent;
sibling.Show();

または、親が応答できるカスタム イベントを発生させます。

于 2010-12-11T20:34:59.977 に答える
0

親を新しいものを作成するのではなく、既存の mdiform に設定する必要があります。

mdiform のインスタンスがまだない場合は、フォームのインスタンスを作成するだけでなく、表示する必要があります。

var mdiForm = new MdiForm();
mdiForm.IsMdiContainer = true;
var childForm = new ChildForm();
childForm.MdiParent = mdiForm;
mdiForm.Show();
childForm.Show();

また、私が使用していることにも注意してください。私の知る限り、プロパティmdiForm.IsMdiContainerはありませんIsMdiParent

于 2010-12-11T20:13:41.280 に答える