Свойство Visible имеет большое значение в Winforms, установка его в true - это то, что вызывает создание собственного окна Windows.Одним из побочных эффектов является то, что установка его в false в методе OnLoad или событии Load не работает.В Hide () нет ничего особенного, он просто устанавливает Visible в false и поэтому не работает.
Переопределение SetVisibleCore () - это способ сделать это.Однако важно, чтобы вы все еще позволяли создавать собственное окно.Вы не можете закрыть () форму иначе.Сделайте так, чтобы это выглядело так:
protected override void SetVisibleCore(bool value) {
if (!IsHandleCreated && value) {
value = false;
CreateHandle();
}
base.SetVisibleCore(value);
}
Теперь вы можете вызвать Show () или установить Visible = true, чтобы сделать окно видимым в любое время.И вызовите Close (), даже если вы никогда не делали это видимым.Это хороший способ реализовать NotifyIcon с помощью всплывающего окна, которое отображается только через контекстное меню.
Обратите внимание, что это имеет побочный эффект, метод OnLoad () и событие Load не запускаютсяпока в первый раз это на самом деле не становится видимым.Вам может понадобиться переместить код.