c# tabcontrol控件标签如何隐藏?

mrnian2008 2009-02-25 03:25:02
我想做成卡巴斯基、nod32、GHOST 2003等那样的界面,就是左边一些按钮,右边是tabcontrol控件。当我点击左边一个按钮时,右边显示tabcontrol的一页,且这一页的标签要隐藏,就是说把原来用标签换页的方式改为用按钮事件代码实现,请问如何实现。
注意:只是隐藏标签,并不是清除一页,有些人数用tabcontrol_order.TabPages.Remove(TabPage_name)是断不可取的,不是这个意思。
...全文
2980 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
panqingr 2012-05-28
  • 打赏
  • 举报
回复
15楼加分,实在高明!!!
panqingr 2012-05-28
  • 打赏
  • 举报
回复
15楼加分,实现高明!!!
miwuawen 2012-05-10
  • 打赏
  • 举报
回复
15楼的方法很不错
qq98360 2011-08-20
  • 打赏
  • 举报
回复
学习了 15楼讲的挺有意思哈
hanit 2010-09-15
  • 打赏
  • 举报
回复
最简单的方案:
假定你的tabControl有三页
0。 tabPageProductsResource
1。 tabPageProductsInformation
2。 tabPageFormatFolders

如果你想点击某个button显示一个页另外两个隐藏, 首先判断你要显示的页存在否,不存在则Add.
这里用到了Controls.Contains().....

先要做的工作,在form的 InitializeComponent()函数中, 先把tabcontrol中的三页隐藏(即Remove掉)
0。 tabPageProductsResource
1。 tabPageProductsInformation
2。 tabPageFormatFolders

方法是 把下面三行注释掉:
this.tabControlLayoutRight.Controls.Add(this.tabPageProductsResource);
this.tabControlLayoutRight.Controls.Add(this.tabPageProductsInformation);
this.tabControlLayoutRight.Controls.Add(this.tabPageFormatFolders);

这三行在C# 的form.Design.cs中,用Notepad中打开,VS IDE中不能打开,因为Microsoft不建议自已修改设计器源码。

这样,在窗口打开时,所有的页都不显示,用户点击button控制tab页的显示。

如果你想默认某tab页显示,就不要注释相应的行。
下面提button点击事件示例。


private void buttonFormatFolder_Click(object sender, EventArgs e)
{

if (!this.tabControlLayoutRight.Controls.Contains(this.tabPageFormatFolders))
{
this.tabControlLayoutRight.Controls.Add(this.tabPageFormatFolders);
}


if (this.tabControlLayoutRight.Controls.Contains(this.tabPageProductsResource))
{
this.tabControlLayoutRight.Controls.Remove(this.tabPageProductsResource);
this.tabControlLayoutRight.Controls.Remove(this.tabPageProductsInformation);
}
}
stonehy520 2009-02-25
  • 打赏
  • 举报
回复
学习,帮顶
uncleson88 2009-02-25
  • 打赏
  • 举报
回复

Apperarance 属性:Faltbuttons
SizeMode属性:Fixed
各个TabPage的Text :空
ItemSize : Width=0;Height=1;//Height好象不能设为0,但也就那么一丁点儿,不影响吧

厉害吧~~给分吧~~~
starts_2000 2009-02-25
  • 打赏
  • 举报
回复

public class TabSwitch : TabControl
{
public TabSwitch()
: base()
{
}

public override Rectangle DisplayRectangle
{
get
{
if (!DesignMode)
return ClientRectangle;
else
return base.DisplayRectangle;
}
}
}
yzxdc 2009-02-25
  • 打赏
  • 举报
回复
教你一个很简单的办法,画一个panel,把tabcontrol放进去,填满,四边矛定,然后把tabcontrol的location设置成负的,直到上面的标签被panel的边框挡住为止
mrnian2008 2009-02-25
  • 打赏
  • 举报
回复
顶阿
wzuomin 2009-02-25
  • 打赏
  • 举报
回复
哎,上面我回复错了,不好意思,不是这个帖子的。

其实lz这个问题,可以用panel+form来实现啊。
每页定义成一个form(toplevel设置成false)
点每个按钮的时候先清除panel内的所有control,然后再增加相应的form就行了。
mrnian2008 2009-02-25
  • 打赏
  • 举报
回复
请问三楼,我用panel的话,好几个重叠在一起,我怎么在每一个panel里布置控件啊?难道先把其他的拖开不成。怎么显示某一个panel及其内容呢?
wzuomin 2009-02-25
  • 打赏
  • 举报
回复
jcyluck 2009-02-25
  • 打赏
  • 举报
回复
选中用:tabControl1.SelectedIndex = 3;
隐藏标签可以考虑将其标签大小设置为0或最小
tenvick 2009-02-25
  • 打赏
  • 举报
回复
自带的控件是不能实现这个功能的,你非要实现只有重写这个控件。或者换其它方式。
mrnian2008 2009-02-25
  • 打赏
  • 举报
回复
各位说具体点吧,我在入门阶段呢....
我姓区不姓区 2009-02-25
  • 打赏
  • 举报
回复
为什么不用MDI或者SplitContainer
ztenv 2009-02-25
  • 打赏
  • 举报
回复
自己写一个控件,控件组合多个panel或其它的container控件,然后公布方法或事件出来,一切搞定;
Dobzhansky 2009-02-25
  • 打赏
  • 举报
回复
多 tabpage 的可见性好似只有那个 remove 的办法
remove 是从 tabcontrol 中去除, tabpage 还在的, 还可以再次加进去

你的方式其实也可以使用多个 panel 在右边来实现
根据左边的选择, 来决定右边哪个panel 可见并且Dock.fill
wzd24 2009-02-25
  • 打赏
  • 举报
回复
不要用TabControl,用Panel吧。
加载更多回复(1)

111,083

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧