ТребованияКак правильно показать окно настроек при запуске приложения (в WinForms)?
А WinForms приложение, которое имеет окно настроек (которые могут быть доступны через меню). Кроме того, перед запуском приложения перед отображением окна приложения сначала нужно отобразить окно настроек. (Это заставляет пользователя проверять/изменять настройки при каждом запуске приложения).
Моя реализация до сих пор
Иметь MainForm
и SettingsForm
. SettingsForm
имеет пару полей ввода, которые сохраняются внутри при закрытии окна. Существует пункт меню в MainForm
, чтобы открыть SettingsForm
. Для того, чтобы отобразить SettingsForm
(через пункт меню) я называю:
SettingsForm settingsForm = new SettingsForm();
settingsForm.Owner = this;
settingsForm.ShowDialog();
Для того, чтобы отобразить SettingsForm
перед показом MainForm
, я вызываю код выше в MainForm_Load()
, прежде чем делать что-нибудь еще.
Проблема
В заявке перспективе SettingsForm
отображается. Но через 2-3 секунды он замерзает.
SettingsForm
является «статическим». Это означает, что его единственным действием является сохранение значений входных файлов при закрытии окна.
[EDIT] Проблема возникла Timer
, которая находилась на MainForm
. Таким образом, общий дизайн в порядке и может использоваться в качестве действительного решения.
Не уверен, что это является причиной вашей проблемы, но, как правило, не так уж и важно открыть дочернюю форму MainForm до того, как сама MainForm была загружена. Вместо этого попробуйте использовать параметр SettingsForm в качестве начального аргумента 'Application.Run()', а когда он будет закрыт, вызовите 'Application.Run()' снова с MainForm в качестве аргумента. –
Основываясь на том, что вы говорите, 'SettingsForm' не замерзает. Поэтому это нечто другое, что вы не нашли достаточно интересным, чтобы сказать, что вызывает проблему.Возможно, вы пытаетесь связаться с «MainForm» из «SettingsForm» так же, как это появляется, и при этом вы входите в тупик или блокировку сообщения. Кроме того: возможно, что симптом «2 секунды» - это просто время, в течение которого ОС осознает, что «НастройкиФорма» не желает отвечать на сообщения, и на самом деле он был заморожен со второго 0 –
@MagnusGrindalBakken Согласен. Так что чище. Тем не менее я опробовал условия, явно представленные в вопросе, и с этим подходом нет никаких проблем. Я предполагаю, что Yeseanul делает что-то не в вопросе, вызывающем замораживание. –