我製造具有這樣的功能的程序:檢查表單是否已打開的最佳方法?
如果形式soanthao被打開,那麼程序將添加一個新的標籤頁到soanthao形式的tabControlEx控制
如果沒有打開表格soanthao,程序會首先載入soanthao表格,然後程序會在soanthao表格的tabControlEx控件中添加一個新的標籤頁。
需要注意的是tabControlEx控件沒有標籤頁。
我用這個代碼:
soanthao st = new soanthao();
bool opened=false;
FormCollection fc = Application.OpenForms;
foreach (Form frm in fc)
{
if (st == frm)
{
opened = true;
}
}
if (opened==false)
{
RichTextBox rtb = new RichTextBox();
TabPage tb = new TabPage();
tb.Text = textBox1.Text;
st.tabControlEx1.TabPages.Add(tb);
rtb.Parent = tb;
rtb.Dock = DockStyle.Fill;
st.Show();
this.Hide();
opened = false;
}
if (opened == true)
{
RichTextBox rtb = new RichTextBox();
TabPage tb = new TabPage();
tb.Text = textBox1.Text;
st.tabControlEx1.TabPages.Add(tb);
st.tabControlEx1.SelectTab(st.tabControlEx1.TabCount - 1);
rtb.Parent = tb;
rtb.Dock = DockStyle.Fill;
this.Hide();
}
但問題是程序會打開一個新的soanthao形式,即使soanthao形式已經打開。
你可能想要考慮崩潰那些冗長的if塊 - 大多數內部代碼看起來是相同的和/或安全的,即使是冗餘的 - 例如即使只有一個選項卡,即使已經顯示,也應該能夠在窗體上調用「Show」,並選擇「SelectTab」。 –
[打開表單如果沒有其他實例打開 - 將類型傳遞給方法](https://stackoverflow.com/q/37512074/3110834) –