ショートバージョン:フォームを表示させずにForm_Load()イベントをトリガーします。フォームを表示せずにロードする
tasksForm.Visible = false;
tasksForm.Show();
ロングバージョン:メインとタスク:私は2つのフォームでのWinFormsアプリケーションがあります。ショーは、()Visibleプロパティの現在の値を無視するので、これは動作しません。メインフォームは常に表示されます。ユーザーはボタンをクリックしてタスクフォームを開くか、タスクフォームを開かずに直接タスクを実行するボタンをクリックすることができます。
ユーザがタスクを直接実行するように要求された場合、タスクフォームでパブリックメソッドを表示せずに呼び出すだけです。残念ながら、タスクロジックはForm_Load()イベントで発生するものに依存します。 Form_Load()をトリガーするために私が見つけることができる唯一の方法は、Show()を呼び出すことです。私が行うことができました最高のは、最小化した状態でフォームを表示することです:
tasksForm.WindowState = FormWindowState.Minimized;
tasksForm.Show();
私はきれいな解決策は、タスクのフォームから出て、コントローラクラスにタスク・ロジックを引っ張ることであろうと仮定します。それから私はメインフォームとタスクフォームからそのクラスを使用して、ユーザーの目に見えるようにタスクフォームをロードするだけです。しかし、フォームを表示せずにフォームをロードするのは簡単なことですが、それは小さな変更になります。
私はあなたが一番きれいなソリューションをお勧めします。後で維持する方が簡単になります。 –
私は私の答えで言ったように、私はScottと同意しているので、これを再加工してコントローラクラスのルートに行く必要があります。それは良い習慣です。 –