フォームがすでに開いているかどうかを確認します。そうでない場合は開き、開いている場合はフォームをアクティブにし、SwitchTab(int i)関数を使用します。ここにいくつかのコードがあります:
public partial class Insert : Form {
public Insert() {
InitializeComponent();
}
public Insert(int tab) : this() {
SwitchTab(tab);
}
public void SwitchTab(int tab) {
tabControl1.SelectedIndex = tab;
}
}
private void OpenInsert(int tab) {
// Loop through all forms
foreach (Form f in Application.OpenForms) {
// Check if form of Insert type is found
if (f.GetType() == typeof(Insert)) {
f.Activate();
// Unknown function
f.SwitchTab(tab)
return;
}
}
// Not found, open form
Insert insert = new Insert(tab);
insert.Show();
}
この背後にある理由は、挿入フォームに複数のタブがあり、メニューの他のボタンがクリックされた場合にタブを切り替えたいためです。問題は、SwitchTab()関数を呼び出したい場合、コンパイラーはそれがInsertクラスであることを認識しませんが、そうである場合にのみ渡されることです。それで、それが挿入のインスタンスであることを強制的に知らせる方法はありますか?