Короткая версия: я хочу вызвать событие Form_Load (), не делая форму видимой. Это не работает, потому что Show () игнорирует текущее значение свойства Visible:
tasksForm.Visible = false;
tasksForm.Show();
Длинная версия: у меня есть приложение WinForms с двумя формами: основной и задач. Основная форма всегда отображается. Пользователь может либо нажать кнопку, чтобы открыть форму задач, либо щелкнуть несколько кнопок, которые просто запускают задачу напрямую, не открывая форму задач.
Когда пользователь просит запустить задачу напрямую, я хотел бы просто вызвать некоторые открытые методы в форме задач, не показывая ее. К сожалению, логика задачи зависит от того, что происходит в событии Form_Load (). Единственный способ найти Form_Load () - это вызвать Show (). Лучшее, что я смог сделать, это показать форму в свернутом состоянии:
tasksForm.WindowState = FormWindowState.Minimized;
tasksForm.Show();
Полагаю, самым чистым решением было бы вытащить логику задач из формы задач в класс контроллера. Затем я могу использовать этот класс из основной формы и из формы задач и загружать форму задач только тогда, когда она мне нужна для просмотра. Однако, если загрузить форму без ее отображения просто, это будет меньшее изменение.