winform の所有者は、.Ownerプロパティを介して明示的に設定できると思います。または、オーバーロードされたメソッドShowDialog(IWin32Window owner)で所有者を渡します。
MDI フォームを操作するときに、これらのメソッドが異なる動作を示す理由を理解できません。
MDIParent と MDIChild を作成しました。
また、ロード時に所有者を表示する単純な winform MyDialogBox もあります。
MessageBox.Show("Dialog's owner is " + this.Owner.Name);
方法 A - MDIChild のロードでは、次のコードがあり、これにより MyDialogBox の所有者がMDIChildに設定されます。
MyDialogBox box = new MyDialogBox();
box.Owner = this; // Set owner as MDIChild
box.ShowDialog();
方法 B - または、MDIChild の load メソッドで、次のコードを使用すると、MyDialogBox の所有者がMDIParentに設定されます。
MyDialogBox box = new MyDialogBox();
box.ShowDialog(this); // Pass MyMDIChild as owner
私はまた、ここで次のことを読みました
MDI 親フォームのみが、MDI 子、モーダル ダイアログ、または親が Owner パラメータとして設定されたフォームなど、別のフォームを所有できます。
もしそうなら、方法Aはまったく機能しないはずですよね?
私は何が欠けていますか?メソッド B が所有者を MDIChild に設定しないのはなぜですか?