由于最近的项目需要,使用TabControl控件开发一个数据库分布同步向导,在最后封装时发现TabControl控件没有现成的隐藏标签的方法和属性;真是急煞人也!想办法解决吧。互联网的功能就是强大,虽然没有找到现成的解决方法,但我也了解的差不多了。经过尝试可以以如下方式实现TabControl的标签隐藏:
在窗体Load事件中添加:
this.tabControl1.Region = new Region(new RectangleF(this.tabPage1.Left, this.tabPage1.Top, this.tabPage1.Width, this.tabPage1.Height));
以上代码完成标签的隐藏,但还存在一个问题,就是Tab + Ctrl 可以切换TabControl中的页,可以通过捕捉按键消息屏蔽 组合键:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
switch (keyData)
{
case (Keys.Tab | Keys.Control):
return true;
default:
break;
}
return base.ProcessCmdKey(ref msg, keyData);
}
这个依旧存在BUG,用Tab键,把焦点能放在选项卡上,然后用左右键控制。
如果加上屏蔽TAB键,和左右键,都可能导致一些用户操作上的BUG。
解决方法:重写TabControl控件。新建一个用户控件,将下列代码写上。使用TabControl的时候,应用的是自己新建的MyTabControl。这时候,重写OnKeyDown方法,便可以将TabControl默认的快捷键屏蔽掉。 这样一来,我设的断点便可以跟踪进去,并且切换的是画红色方框的TabControl了。
http://stackoverflow.com/questions/1952839/disable-default-shortcuts-on-a-tabcontrol