Как правильно ShowDialog () изнутри формы MDIChild? - PullRequest
3 голосов
/ 28 января 2009

У меня есть форма MDIChild, которая должна показать диалог. В настоящее время я делаю это так внутри формы mdichild ...

f.ShowDialog(Me)

Должен ли я использовать f.ShowDialog(mdiparent)?

Какая разница при настройке владельца перед звонком ShowDialog()?

Ответы [ 3 ]

4 голосов
/ 29 января 2009

Я не уверен, если это связано, но у меня были некоторые проблемы с передачей формы владения в ShowDialog, я обычно делаю это:

f.Owner = Me
f.ShowDialog()
3 голосов
/ 11 февраля 2009

Разница в том, какой родитель владеет диалогом. Если вы явно указали родителя, диалоговое окно принадлежит этому окну. Если вы не установите его (используя версию ShowDialog без параметров), то текущему активному окну вашего приложения будет принадлежать это диалоговое окно. Это на MSDN , кстати.

Где это полезно, это центрирование вашего диалога путем установки свойства StartPosition с использованием перечисления FormStartPosition.CenterParent.

0 голосов
/ 10 сентября 2015

Это имеет значение ...

У меня есть дочерний элемент MDI, который вызывает ShowDialog (Me), и в открывшемся диалоговом окне Me.Owner ссылается на контейнер MDI, а не на дочерний MDI.

Использование Me.Owner.ActiveControl - это обходной путь, но с использованием:

       Dim ContractForm As New Contract(strType, intMode)
       ContractForm.Owner = Me
       dgrAction = ContractForm.ShowDialog()

Получает это красиво. В открывшемся диалоговом окне Me.Owner теперь ссылается на дочерний объект MDI.

Надеюсь, это поможет!

...