Как лучше всего вызвать метод сразу ПОСЛЕ загрузки формы?

StackOverflow https://stackoverflow.com/questions/2957963

Вопрос

У меня есть приложение 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
}

Попробуйте событие «показано»:

Form.show Event

  • Использование Windows.Forms.Timer — это хороший, стабильный, хорошо известный и простой для понимания метод выполнения того, что вы хотите.Я бы избегал любых других объектов таймера.

  • Форма Shown мероприятие работает хорошо.

  • Перегрузить/переопределить Show метод.(Мой предпочтительный метод для большего контроля.) С помощью этого метода я выполнял необходимую проверку.Когда все будет готово, я позвоню base.Show метод, затем выполните любую другую обработку, например окна сообщений, приглашения, ведение журнала и т. д.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top