Ни один из ответов не решил исходный вопрос, поэтому добавьте ниже, вызовите .Show (), чтобы загрузить форму, не показывая ее, затем вызовите .ShowForm (), чтобы позволить ей быть видимой, если вы хотите после:

кая версия: я хочу вызвать событие Form_Load (), не делая форму видимой. Это не работает, потому что Show () игнорирует текущее значение свойства Visible:

tasksForm.Visible = false;
tasksForm.Show();

Длинная версия: у меня есть приложение WinForms с двумя формами: основной и задач. Основная форма всегда отображается. Пользователь может либо нажать кнопку, чтобы открыть форму задач, либо щелкнуть несколько кнопок, которые просто запускают задачу напрямую, не открывая форму задач.

Когда пользователь просит запустить задачу напрямую, я хотел бы просто вызвать некоторые открытые методы в форме задач, не показывая ее. К сожалению, логика задачи зависит от того, что происходит в событии Form_Load (). Единственный способ найти Form_Load () - это вызвать Show (). Лучшее, что я смог сделать, это показать форму в минимизированном состоянии:

tasksForm.WindowState = FormWindowState.Minimized;
tasksForm.Show();

Я полагаю, что самым чистым решением было бы вытащить логику задач из формы задач в класс контроллера. Затем я могу использовать этот класс из основной формы и из формы задач и загружать форму задач только тогда, когда она мне нужна для просмотра. Однако, если загружать форму без ее отображения легко, это будет меньшее изменение.