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