Дочерняя форма теряет фокус при первом нажатии на родительскую форму. Как это исправить? - PullRequest
1 голос
/ 22 сентября 2010

Я пишу новое приложение на основе плагинов. Это загружает сборки в их собственные домены приложений и отображает указанные основные формы внутри каждого через Application.Run (pluginForm). Я установил основную форму в приложении-загрузчике в качестве родителя для каждого pluginForm перед вызовом Application.Run (pluginForm) внутри домена приложения. Следовательно, когда pluginForm показывает, он всегда отображается перед mainForm приложения-загрузчика.

Моя проблема заключается в том, что когда пользователь впервые нажимает на pluginForm (дочерняя форма), он теряет фокус, а mainForm (форма приложения загрузчика) получает фокус. (Однако pluginForm остается впереди) Следовательно, пользователю приходится дважды щелкать мышью, чтобы pluginForm впервые сфокусировался.

Это довольно раздражает. Как я могу это исправить?

Ответы [ 2 ]

2 голосов
/ 22 сентября 2010

Вы должны показать дочерние формы как модальные диалоги в потоке пользовательского интерфейса родителя, вызвав ShowDialog().

0 голосов
/ 22 сентября 2010

При вызове детской формы используйте

childForm.ShowDialog(parentForm);

ИЛИ эквивалент

childForm.ShowDialog(this);
...