Versión corta: Deseo activar el evento Form_Load() sin hacer que el formulario sea visible. Esto no funcionará porque Show() ignora el valor actual de la propiedad visible:Cargue un formulario sin mostrarlo
tasksForm.Visible = false;
tasksForm.Show();
Versión larga: Tengo una aplicación Windows Forms con dos formas: principal y tareas. La forma principal siempre se muestra. El usuario puede hacer clic en un botón para abrir el formulario de tareas o hacer clic en algunos botones que solo ejecutan una tarea directamente sin abrir el formulario de tareas.
Cuando un usuario solicita ejecutar una tarea directamente, me gustaría simplemente llamar a algunos métodos públicos en el formulario de tareas sin mostrarlo. Desafortunadamente, la lógica de la tarea depende de las cosas que suceden en el evento Form_Load(). La única forma que puedo encontrar para desencadenar Form_Load() es llamar a Show(). El mejor que he podido hacer es mostrar la forma en el estado minimizado:
tasksForm.WindowState = FormWindowState.Minimized;
tasksForm.Show();
supongo que la solución más limpia sería para tirar de la lógica de las tareas de la forma y tareas en una clase controlador. Entonces puedo usar esa clase desde el formulario principal y desde el formulario de tareas, y solo cargo el formulario de tareas cuando lo necesito para el usuario. Sin embargo, si es fácil cargar el formulario sin mostrarlo, sería un cambio menor.
Lo aliento a que vaya con la solución más limpia. Será más fácil para usted mantenerlo más adelante. –
Como ya he dicho en mi respuesta y estoy de acuerdo con Scott, debe volver a trabajar esto y seguir la ruta de la clase de controlador. Es una buena práctica. –