(c) «Профили .NET 2.0 Windows Forms и пользовательские элементы управления» Мэтью Макдональда.
В ShowDialog показывает новый формуляр, неявных отношений установлены между текущим активной формой, известной как форма владелец и новой формой, известной как принадлежащая формой. Это соотношение гарантирует, что форма собственности является активной формой и всегда отображается на верхней части формы владельца.
Одной из особенностей этих отношений является то, что принадлежит форме влияет на поведении своего владельца формы (при использовании ShowDialog):
- Форма владельца не может быть сведена к минимуму, развернута, или даже переехала.
- Собственная форма блокирует ввод мыши и клавиатуры в форму владельца.
- Форма владельца сводится к минимуму при наличии соответствующей формы.
- Только принадлежащая ему форма может быть закрыта.
- Если и владелец, и принадлежащие ему формы сведены к минимуму, и если пользователь нажимает Alt + Tab для переключения в принадлежащую ему форму, активная форма активируется.
В отличие от метода ShowDialog, однако, призыв к Показать метод делает не устанавливает неявный владельца собственности отношения. Это означает, что любая форма может быть активной формой.
Без неявных отношений с владельцем владельцы и принадлежащие ему формы также могут быть сведены к минимуму, увеличены или перемещены. Если пользователь закрывает любую форму , отличную от основной формы, активна последняя форма - .
Хотя ShowDialog устанавливает неявный владелец собственности отношения, нет встроенного способа для принадлежащей формы перезвонить или запрос форму, открытых его. В случае неспособности вы можете установить новое свойство владельца , чтобы установить отношения владельца. В качестве ярлыка вы можете передать форму владельца в качестве аргумента для перегрузки метода Show, который также принимает параметр IWin32Window (IWin32Window реализован объектами пользовательского интерфейса Windows Forms, которые открывают свойство Win32 HWND через IWin32Window. Обработать свойство).
Поведение форм в явных модальных владельце принадлежащей формы отношений является таким же, как его аналог неявного модальным, но немодальный владелец собственности отношения обеспечивает дополнительное поведение в , не принадлежащий владельцем немодального случае. Во-первых, формальная форма собственности всегда появляется поверх формы владельца, даже если она может быть активной. Это полезно, когда вам нужно сохранить форму, например плавающий инструмент , поверх других форм в приложении. Во-вторых, если пользователь нажимает Alt + Tab для переключения с владельца, принадлежащие ему формы следуют . Чтобы гарантировать, что пользователь знает, какая форма является основной формой, , минимизирующий владельца, скрывает кнопки панели задач для всех принадлежащих ему форм, оставляет видимым только кнопку панели задач владельца.
(c) «Программирование Windows Forms 2.0» Криса Продажса, Майкла Вайнхардта.
Это не похоже на применение в winforms, но для записи я пришел сюда, потому что у меня были проблемы с WPF. Если бы я переключился на другое приложение, когда я снова нажал на родительскую форму, дочерний диалог застрял позади (облом, когда дочерний диалог был установлен, чтобы не отображаться на панели задач). Настройка владельца диалогового окна устранена. – Benjol
Запустите фоновый рабочий и вызовите ShowDialog.Окно не будет отображаться перед вашим приложением, а на фоне (просто чтобы раздражать нас программисты, это случается только время от времени). – CodingBarfield
Barfieldmv, я попытался сделать то, что вы предложили, и форма появится сверху, а не на заднем плане. – nightcoder