2009-03-23 5 views
3

Думая об этом для диалога «О», но я уверен, что он применим в других местах (скажем, поле поиска)Как сделать немодальный верхний диалог, который является только самым верхним в отношении родительской формы в WinForms?

Извините, если это обман, но я не мог найти это и как сформулировать последнюю часть об этом только на вершине родителя. Как вы делаете форму, которая всегда находится на верхней части родительской формы, но является немодальной, но не закрывает другие приложения?

ответ

9

Попробуйте открыть ваш диалог:

FindDialog fd = new FindDialog(); 
fd.Show(this); 

Ключ назначить владельца диалога.

+0

Знал, что это должно было быть чем-то простым, спасибо! – Davy8

0

Не уверен, что вы имеете в виду; Form.ShowDialog является только модальным относительно родителя, а не приложения, если приложение не является однопоточным.

Например, я сделал приложение, чтобы проверить это, которое было организовано как следующие:

MainForm: 2 кнопки, каждая из которых начинается поток, который создает frmDialog1 и вызывает ShowDialog

frmDialog1: одиночная кнопка, которая создает frmDialog2 и вызывает ShowDialog.

frmDialog2: (т. Е пробел) ничего не делает

, когда они все работает, я мог получить доступ к/сопротивления MainForm. Я также мог бы сделать то же самое с frmDialog1 (обе версии), только если бы я не нажал кнопку, которая показывает диалог 2.

+0

«Форма.ShowDialog является только модальной относительно родителя, а не приложения, если приложение не однопоточное». Правильно, но я хочу, чтобы он был немодальным относительно родителя, однако я все равно хотел, чтобы он всегда был поверх родителя. – Davy8

+0

Кроме того, вы правы, что я могу начать новый поток, чтобы отобразить диалоговое окно, чтобы не блокировать основной пользовательский интерфейс, но я стараюсь избегать ручного потока, если я могу ему помочь. Мне не нужен результат диалога, это как раз диалог About, так что начало потока кажется излишним. – Davy8

+0

Как ваше приложение, я отдам вашей мудрости; но 2 liner Thread any = new Thread (methodname); whatever.Start(); вряд ли переборщит. –

 Смежные вопросы

  • Нет связанных вопросов^_^