简短版本:我想触发 Form_Load() 事件而不使表单可见。这不起作用,因为 Show() 忽略了 Visible 属性的当前值:
tasksForm.Visible = false;
tasksForm.Show();
长版:我有一个 WinForms 应用程序,它有两种形式:主要形式和任务形式。主窗体始终显示。用户既可以点击按钮打开任务表单,也可以点击一些按钮直接运行任务而不打开任务表单。
当用户要求直接运行任务时,我只想在任务表单上调用一些公共方法而不显示它。不幸的是,任务逻辑取决于 Form_Load() 事件中发生的事情。我能找到触发 Form_Load() 的唯一方法是调用 Show()。我能做的最好的就是以最小化状态显示表单:
tasksForm.WindowState = FormWindowState.Minimized;
tasksForm.Show();
我想最干净的解决方案是将任务逻辑从任务表单中拉出并放入控制器类中。然后我可以从主表单和任务表单中使用该类,并且仅在我需要它对用户可见时才加载任务表单。但是,如果加载表单而不显示它是一件容易的事情,那将是一个较小的变化。