Надеюсь, я просто упускаю что-то очевидное, но я пытаюсь разобраться в различиях между событиями Load и Shown в Windows Forms .
Традиционно я использовал только Load (или фактически OnLoad, поскольку я думаю, что переопределить метод более чисто, чем полагаться на конструктор, чтобы подключить событие к себе), поскольку он доступен во всех версиях .NET. , В .NET 2.0 было представлено событие Shown.
Теперь, если вы посмотрите на их описания в документации MSDN («Загрузка: Происходит до того, как форма отображается в первый раз.», «Показано: Происходит при первом отображении формы.») It звучит как должно произойти событие Load, затем форма должна стать видимой, затем должно произойти событие Shown; комбинация этих двух тем позволяет вам выполнять некоторые задачи как до, так и после отображения формы. Имеет смысл, верно?
Однако эксперимент показал, что событие Shown неизменно наступает за до события Load, всякий раз, когда я его пробую (и оба происходят до того, как форма становится видимой). И все же, когда я гуглюсь, когда обнаруживаю страницу, которая говорит о порядке запуска этих событий, они всегда перечисляют событие Load, которое запускается первым.
Я просто схожу с ума, или я что-то пропустил? (И если они происходят примерно в одно и то же время, то почему было добавлено событие Shown?)
(Мое текущее решение сделать что-то как до, так и после показа формы - это использовать OnLoad для «до показа» и запускать кратковременный таймер однократного действия для «после показа». надежно, но это немного уродливо, и я надеялся, что было более чистое решение. Но, похоже, событие Shown не так.)