即使选项卡控件中已存在选项卡页面,也会继续创建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);
}
}
我的代码出了什么问题? 感谢。
答案 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);
}
}