Как лучше всего вызвать метод сразу ПОСЛЕ загрузки формы?
-
23-10-2019 - |
Вопрос
У меня есть приложение Windows Forms на С#.В настоящее время я настроил его так: при запуске Form1_Load() он проверяет наличие восстановленных несохраненных данных, и если он их находит, он запрашивает пользователя, хотят ли они открыть эти данные.Когда программа запускается, она работает нормально, но окно сообщения отображается сразу, а основная форма программы (Form1) не отображается до тех пор, пока пользователь не нажмет «Да» или «Нет».Я бы хотел, чтобы сначала появлялась форма Form1, а затем появлялось окно сообщения.
Теперь, чтобы обойти эту проблему, прежде чем я создал таймер в своей форме, запустил таймер в методе Form1_Load(), а затем выполнил проверку и приглашение пользователя в первом событии Timer Tick.Этот метод решает проблему, но кажется, что может быть лучший способ.
Ребята, у вас есть идеи получше?
Редактировать:Думаю, я также использовал фонового работника, чтобы сделать что-то подобное.Просто кажется глупым проделывать все эти хлопоты по вызову метода для возврата в поток формы и всю эту ерунду только для того, чтобы задержать его на пару миллисекунд!
Решение
Я бы использовал form1_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
метод, затем выполните любую другую обработку, например окна сообщений, приглашения, ведение журнала и т. д.