Я предполагаю, что владелец winform может быть установлен явно через свойство .Owner ИЛИ путем передачи владельца в перегруженном методе ShowDialog (владелец IWin32Window)
Я не могу понять, почему эти методы проявляют другое поведение при работе с 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 у меня есть следующий код, который заставляет владельца MyDialogBox быть установлен на MDIParent
MyDialogBox box = new MyDialogBox();
box.ShowDialog(this); // Pass MyMDIChild as owner
Я также прочитал следующее здесь
Только родительская форма MDI может владеть другой формой, будь то дочерний MDI, модальное диалоговое окно или форма, в которой родительский элемент был установлен в качестве параметра Owner.
Если так, то метод А вообще не должен работать, не так ли?
Чего мне не хватает? Почему метод B не устанавливает владельца для MDIChild?