У меня есть приложение форм окон C#. Путем у меня в настоящее время есть настроенный, когда Form1_Load () работает, это проверяет на восстановленные несохраненные данные и если это находит некоторых, которые это предлагает пользователю, если они хотят открыть те данные. Когда прогоны программы, это работает хорошо, но окно сообщения показывают сразу же и основная форма программы (Form1), не показывают, пока пользователь не нажимает да или нет. Я хотел бы, чтобы Form1 открылся сначала и затем подсказка окна сообщения.
Теперь для обхождения этой проблемы, прежде чем я создал таймер в своей Форме, запустило таймер в Form1_Load () метод и затем выполнило проверку и пользовательскую подсказку в Событии Галочки новичка. Эта техника решает проблему, но, кажется, что мог бы быть лучший путь.
Вы у парней есть какие-либо лучшие идеи?
Править: Я думаю, что также использовал второстепенного рабочего, чтобы сделать что-то подобное. Это просто кажется довольно глупым для прохождения через всей проблемы вызвать метод для поддержки к потоку формы, и все это дерьмо только, чтобы иметь его задержало пару миллисекунд!
Используйте событие Shown. Похоже, оно подходит для того, что вам нужно, и будет отображаться только при первом показе формы.
Form f1 = new Form();
f1.Shown += new EventHandler(f1_Shown);
public void f1_Shown(object sender, EventArgs e)
{
// Show dialog in here
}
Использование Windows.Forms.Timer - это хорошая, стабильная, хорошо известная и легко понимаемая техника для выполнения того, что вы хотите. Я бы избегал любых других объектов таймера.
Событие формы Shown
работает хорошо.
Перегрузите / переопределите метод Show
. (Я предпочитаю этот метод для большего контроля.) В этом методе я бы выполнил необходимую проверку. Когда он будет готов, я вызову метод base.Show
, а затем выполню любую другую обработку, такую как окна сообщений, подсказки, логирование или что-либо еще.