2011-11-10 47 views
1

即使選項卡頁面已經存在於我的選項卡控件中,TabPage也不斷創建。 請考慮我的代碼如下:TabPage不斷創建。 C#

void button1_Click(object sender, EventArgs e) 
{ 
    TabPage tabPage = new TabPage(); 
    tabPage.Name = "TestNewTab"; 
    tabPage.Text = "Tab Page"; 

    // Check if the tabpage is not yet existing 
    if (!tabControl1.TabPages.Contains(tabPage)) 
    { 
     // Add the new tab page 
     tabControl1.TabPages.Add(tabPage); 
    } 
} 

我的代碼有什麼問題? 謝謝。

回答

4

我的猜測是,TabPages.Contains被檢查對象的引用,因爲你每次都實例化一個新的TabPage,它不會是同一個對象。嘗試循環瀏覽標籤頁並比較Name屬性。

+0

+1正是我想:) – mellamokb

+0

有道理..現在嘗試。感謝這個想法。 – yonan2236

1

問題是.Contains將在查找參考類型(如TabPage)時檢查相同的參考值,該值不等於相同的值。一個簡單的方法來解決你的問題可能是做這樣的事情:

TabPage tabPage; 

void button1_Click(object sender, EventArgs e) 
{ 
    // Check if the tabpage doesn't exist yet: 
    if (tabPage == null) 
    { 
     // Create the tab page: 
     tabPage = new TabPage(); 
     tabPage.Name = "TestNewTab"; 
     tabPage.Text = "Tab Page"; 

     // Add the new tab page: 
     tabControl1.TabPages.Add(tabPage); 
    } 
}