TabPage一直在创建。 C#

时间:2011-11-10 03:59:36

标签: c# winforms

即使选项卡控件中已存在选项卡页面,也会继续创建TabPage。 请考虑下面的代码:

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);
    }
}

我的代码出了什么问题? 感谢。

2 个答案:

答案 0 :(得分:4)

我的猜测是TabPages.Contains正在检查一个对象引用,因为你每次都要实例化一个新的TabPage,它不会是同一个对象。尝试循环选项卡页面并比较Name属性。

答案 1 :(得分: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);
    }
}