フォームの単一のインスタンスを開くことができる再利用可能な関数を作成しようとしています。フォームが既に開いていない場合は、新しいフォームを作成して表示し、既に開いている場合は、既存のフォームを前面に表示する必要があります。フォームの単一のインスタンスを開くための単一の再利用可能な関数
私は、次の関数を使用して
if (Application.OpenForms["FPSStorageDemo"] == null)
{
FPSStorageDemo fp = new FPSStorageDemo();
fp.Name = "FPSStorageDemo";
fp.Show();
}
else
{
((FPSStorageDemo)Application.OpenForms["FPSStorageDemo"]).BringToFront();
}
しかし、私は、フォームを開く必要がwhereever何度も何度もこのコードを記述する必要がありました。しかし、私はこの仕事をすることができる単一の再利用可能な機能が必要です。
私は、同様の機能を書いた
void OpenSingleInstanceForm(Type TypeOfControlToOpen)
{
bool IsFormOpen = false;
foreach (Form fm in Application.OpenForms)
{
if (fm.GetType() == TypeOfControlToOpen)
{
IsFormOpen = true;
fm.BringToFront();
break;
}
}
if (!IsFormOpen)
{
Object obj = Activator.CreateInstance(TypeOfControlToOpen);
//obj.Show(); //Here is the problem
}
}
しかし、最後に、私は新しいフォームのインスタンスを表示する方法がわかりません。誰もそれを行う方法を提案することはできますか?これは間違っているのですか、これを行う別の方法がありますか?
ありがとうございます。
((Form)obj).Show();これは私の問題を解決した – Matt