在使用VS2005的C#中,我有一个带有7个选项卡的Winforms TabControl,但是我希望最后一个选项卡仅在设置了某个配置选项时才可见。如何将TabControl选项卡设置为隐形
如何使TabControl只显示前六个选项卡?换句话说,我如何让第七个标签不可见?
在使用VS2005的C#中,我有一个带有7个选项卡的Winforms TabControl,但是我希望最后一个选项卡仅在设置了某个配置选项时才可见。如何将TabControl选项卡设置为隐形
如何使TabControl只显示前六个选项卡?换句话说,我如何让第七个标签不可见?
private void HideTab(object sender, EventArgs e)
{
this.tabControl1.TabPages.Remove(this.tabPage2);
}
private void ShowTab(object sender, EventArgs e)
{
this.tabControl1.TabPages.Add(this.tabPage2);
}
this.tabPage2是您的第7个页面页,无论您给它起什么名字。
这不够好,被删除的页面及其控件会泄漏永久。跟踪已删除的页面,并在窗体关闭时调用Dispose()。 – 2010-10-22 08:40:23
@Hans。呃,不,如果窗体关闭,不会。除非您提供其他对象的参考。 this.tabPage2被包含它的表单引用,当该表单关闭时,垃圾收集器将为你完成这项工作。 – 2010-10-22 08:50:00
不,TabControl.Dispose()会自动处理页面。 Form.Dispose()迭代Controls集合。但是当页面被移除时它不能。 tabPage2引用不够好,它不包含在Controls集合中。 – 2010-10-22 08:53:46
不能在tabcontrol中隐藏选项卡。如果你正在添加标签和运行时间,那么如果条件不满意,不要添加第7个标签。
如果您在设计时间内完成了,如果condtion失败,请移除标签。
yourTabControl.TabPages.Remove(tabPageName);
可以实现属性
public bool TabVisible
{
get
{
return tabControl1.Contains(tabPage2);
}
set
{
if(value == TabVisible) return;
if(value)
tabControl1.TabPages.Add(tabPage2);
else
tabControl1.TabPages.Remove(tabPage2);
}
}
你也应该覆盖你的配置功能,
你可以从设计师搬出Dispose
函数生成的代码到你自己的代码,设计师注意到。你会发现components.Dispose();
函数无法再进入tabPage进行处理,所以如果它没有被丢弃,你需要手动处理它。其他方面,尤其是如果你打开你的窗户很多次,你用尽了窗口句柄
可能的重复:http://stackoverflow.com/questions/552579/how-to-hide-tabpage-from-tabcontrol – prostynick 2010-10-22 08:31:35
可能的重复[在tabControl中隐藏和显示TabPages](http://stackoverflow.com/questions/3365025/hiding-and-showing-tabpages-in-tabcontrol) – 2010-10-22 08:41:20