フォームの単一のインスタンスを開くことができる再利用可能な関数を作成しようとしています。フォームがまだ開いていない場合は、新しいフォームを作成して表示する必要があり、既に開いている場合は、既存のフォームを前面に表示する必要があります。
私は次の機能を使用していました、
if (Application.OpenForms["FPSStorageDemo"] == null)
{
FPSStorageDemo fp = new FPSStorageDemo();
fp.Name = "FPSStorageDemo";
fp.Show();
}
else
{
((FPSStorageDemo)Application.OpenForms["FPSStorageDemo"]).BringToFront();
}
しかし、フォームを開く必要があるときはいつでも、このコードを何度も書かなければなりません。しかし、この仕事を行うことができる単一の再利用可能な関数が必要です。
私は次のような関数を書きました、
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
}
}
しかし、最後に、新しいフォーム インスタンスを表示する方法がわかりません。誰もそれを行う方法を提案できますか? これは間違っていますか、それとも別の方法がありますか?
前もって感謝します。