私はこの機能を使用して既存のフォームを閉じ、新しいフォームを開きます。c#windowsアプリケーションでオープンフォームを検索
exixtingフォームがない場合は、エラーが発生します。
エラー:
対象:System.ObjectのMarshaledInvoke(System.Windows.Forms.Control、System.Delegate、System.Objectの[]、Boolean)を
メッセージ:起動またはBeginInvokeメソッドをコールすることはできませんウィンドウハンドルが作成されるまでのコントロール。
スタック:System.Windows.Forms.Control.MarshaledInvokeで(コントロール発信者、委任方法、[]引数、ブール同期オブジェクト)
SO回避するためにフォームを閉じる前に、任意の形式のオープンを確認する必要がありますエラー。どうやって?
static public void NewMainForm(Form main, bool ClosePreviousMain)
{
if (main != null)
{
Global.ActiveForm = main.Text;
if (ClosePreviousMain & MyContext.curMain != null)
{
MyContext.curMain.FormClosed -= new FormClosedEventHandler(main_FormClosed);
//Need to check for any form active and then close the form.
MyContext.curMain.Invoke(new Action(MyContext.curMain.Dispose));
}
MyContext.curMain = main;
MyContext.curMain.FormClosed += new FormClosedEventHandler(main_FormClosed);
MyContext.curMain.ShowDialog();
}
}