tabcontrol 控件的标签的隐藏【C#】

来源:互联网 发布:node addeventlistenwr 编辑:程序博客网 时间:2024/04/29 22:46

【方法一】

由于最近的项目需要,使用TabControl控件开发一个数据库分布同步向导,在最后封装时发现TabControl控件没有现成的隐藏标签的方法和属性;真是急煞人也!想办法解决吧。互联网的功能就是强大,虽然没有找到现成的解决方法,但我也了解的差不多了。经过尝试可以以如下方式实现TabControl的标签隐藏:

在窗体Load事件中添加:

以上代码完成标签的隐藏,但还存在一个问题,就是 Ctrl +Tab 可以切换TabControl中的页,可以通过捕捉按键消息屏蔽 组合键:

以上两步即可实现TabControl 标签的隐藏,如果要效果理想,可以调整TabControl 的appearance属性设置TabControl 的绘制方式。

 

【方法二】

隐藏TabControl的标签必须通过继承TabControl并自行重画来实现。下面是一个重画TabControl的完整的例子:

以下是对上面的例子代码的一点说明:
1) public bool UserChangeTab成员的作用是规定是否允许用户在界面上通过鼠标点击标签和按"Ctrl+Tab"来改变当前标签页。
2) 在构造函数中调用SetStyle()的目的是告诉系统这个控件将自行重画,而不是用系统默认的显示方式。
3) OnPaint()完成的就是自行重画的工作,其中调用了DrawItem函数来重画所有的标签。
4) SetDafaultStyle()的功能是设定一些默认的颜色和界面风格。
5) 最重要的就是重载WndProc()和OnKeyDown()函数。在这两个重载函数中捕获了鼠标点击事件以及键盘输入事件。一旦this.UserChangeTab的值为false(即不允许用户来改变标签页),则将捕获的事件销毁,不再传递给基类的事件处理函数。

使用这个FTabControl时,
1) 如果需要禁止用户通过鼠标或者Ctrl+Tab改变标签页,需要设定UserChangeTab为false。
2) 如果需要隐藏标签,需要将FTabControl的ItemSize属性设为(1,1),并适当调整颜色设置以达到视觉上看不出的效果。

需要说明的是,通过上面这个例子,不但可以实现隐藏Tab标签、禁止用户改变标签等功能,通过扩充DrawItem函数还可以实现Tab标签的各种复杂视觉效果。  

 

【方法三】

关于如何把TabControl 的上面的tab头(page页标签)隐藏

许多网友问这个问题,实际上无法办到。我找到了一个替代的办法,效果基本满足。

即:设置TabControl的ItemSize(1,1),大家有爱好的话可以一试。

<网友回复>
那这样要TabControl干嘛啊?

可以用Panel把它装起来,设置Location的Y值为负的就可以


<网友回复>当你想要隐藏的时候