菜鸟!! 隐藏TabControl的标签必须通过继承TabControl并自行重画来实现 问题!!

zhangCbrother 2010-05-10 10:00:28
public class FTabControl : System.Windows.Forms.TabControl{
private System.ComponentModel.Container components = null;
private static Color BackColor=Color.FromArgb(227,237,251);
private static Color ButtonColor;
private static Color ButtonHighlightColor;
private static Color BorderColor=Color.Black;
public bool UserChangeTab=true;

public FTabControl(){
InitializeComponent();
SetDafaultStyle();
SetStyle(ControlStyles.UserPaint,true);
}

#region Component Designer generated code
private void InitializeComponent(){
components = new System.ComponentModel.Container();
}
#endregion

public void SetDafaultStyle(){
Appearance = System.Windows.Forms.TabAppearance.FlatButtons;
ButtonColor = Color.FromArgb(184,210,250);
ButtonHighlightColor = Color.FromArgb(144,187,252);
}

protected override void OnPaint(PaintEventArgs e){
e.Graphics.FillRectangle(new SolidBrush(BackColor),e.ClipRectangle);
for (int i=0;i<this.TabCount;i++){
DrawItem(e.Graphics,i);
}
}

protected void DrawItem(Graphics g,int index){
Rectangle r = GetTabRect(index);
r.Inflate(-2,-2);
if (SelectedIndex==index)
g.FillRectangle(new SolidBrush(ButtonHighlightColor),r);
else
g.FillRectangle(new SolidBrush(ButtonColor),r);
g.DrawRectangle(new Pen(new SolidBrush(BorderColor)),r);
r.Inflate(-3,-3);
g.DrawString(TabPages[index].Text,Font,new SolidBrush(BorderColor),r);
}

protected override void WndProc(ref System.Windows.Forms.Message m){
if (m.Msg == 513 && !this.UserChangeTab ){
return; //trap WM_LBUTTONDOWN
}
else{
base.WndProc(ref m);
}
}

protected override void OnKeyDown(KeyEventArgs e){
if(e.Control==true && e.KeyCode==System.Windows.Forms.Keys.Tab && !this.UserChangeTab){
return; //trap CTRL+TAB and CTRL+SHIFT+TAB
}
else{
base.OnKeyDown(e);
}
}
}

最近在学怎么使TabContro控件的子页隐藏起来!找了这些代码。可不是很理解是什么意思?请各位高手帮我解释下 最好能详细点的 还有重点 我不知道这些代码怎么用呀? 要用再哪呢?? 小弟是个菜鸟。也许这样问会让大家笑话 不过不懂就要问。。。所以还是要麻烦你们了。。。
...全文
441 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangCbrother 2010-05-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 computerfox 的回复:]

你找到的这些代码不能隐藏子页的!
[/Quote]

我试过了 你说的对 最后我发现那些代码只是隐藏所有的标签 想不让用户修改的。
我可想要实现的是跟浏览器一样的效果 隐藏单个的子页的
不知道怎么做了。。。
zhangCbrother 2010-05-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zanfeng 的回复:]

网上有个开源。界面非常漂亮,类名字也和楼主的差劲多。
[/Quote]什么意思??
zhangCbrother 2010-05-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 computerfox 的回复:]

你找到的这些代码不能隐藏子页的!
[/Quote]
不是吧!那要怎么实现?我找了很多资料 可都是说这种最好的呀!
不好意思昨天有点事 现在再回你们。。
足球中国 2010-05-10
  • 打赏
  • 举报
回复
网上有个开源。界面非常漂亮,类名字也和楼主的差劲多。
xk1126 2010-05-10
  • 打赏
  • 举报
回复
SetStyle(ControlStyles.UserPaint,true);
UserPaint 如果为 true,控件将自行绘制,而不是通过操作系统来绘制。如果为 false,将不会引发 Paint 事件。
试试!~
捷哥1999 2010-05-10
  • 打赏
  • 举报
回复
使用很简单,你创建一个类,把代码拷贝进去,编译一下,就能看到工具箱上多出一个FTabControl控件,拖到Form上就能用,关键是它不能实现隐藏!
捷哥1999 2010-05-10
  • 打赏
  • 举报
回复
你找到的这些代码不能隐藏子页的!
zhangCbrother 2010-05-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wuyq11 的回复:]
SetStyle(ControlStyles.UserPaint,true);
UserPaint 如果为 true,控件将自行绘制,而不是通过操作系统来绘制。如果为 false,将不会引发 Paint 事件。
参考
[/Quote]
参考我有看过了
可还是不知道怎么使用呀?
那些代码要写在项目中的哪里呀?
wuyq11 2010-05-10
  • 打赏
  • 举报
回复

SetStyle(ControlStyles.UserPaint,true);
UserPaint 如果为 true,控件将自行绘制,而不是通过操作系统来绘制。如果为 false,将不会引发 Paint 事件。
参考
dylike 2010-05-10
  • 打赏
  • 举报
回复
TabControl1.Region=New Region(TabPage1.Left,TabControl1.Height-TabPage1.Height,TabPage1.Width,TabPage1.Height)

110,534

社区成员

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

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

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