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