实现Winform中TabControl控件tabpage标签页边缘变成圆角,且不显示边框颜色,标签文字竖排侧着显示
时间: 2024-03-16 13:48:07 浏览: 252
学习Winform分组类控件(Panel、groupBox、TabControl)
要实现Winform中TabControl控件tabpage标签页边缘变成圆角、不显示边框颜色、标签文字侧着显示的效果,可以通过以下步骤:
1. 新建一个类,继承自TabControl,重写OnPaint方法,添加以下代码:
```csharp
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
// 设置TabControl控件的Region属性
System.Drawing.Drawing2D.GraphicsPath path = new System.Drawing.Drawing2D.GraphicsPath();
Rectangle rect = this.ClientRectangle;
rect.Inflate(-10, -10);
path.AddRoundRectangle(rect, 20);
this.Region = new Region(path);
// 设置标签页文字竖排侧着显示
foreach (TabPage tabpage in this.TabPages)
{
tabpage.Text = "";
tabpage.Paint += new PaintEventHandler(TabPage_Paint);
}
}
private void TabPage_Paint(object sender, PaintEventArgs e)
{
TabPage tabpage = (TabPage)sender;
Graphics g = e.Graphics;
g.RotateTransform(-90);
g.TranslateTransform(-tabpage.Height, 0);
SizeF size = g.MeasureString(tabpage.Text, tabpage.Font);
g.DrawString(tabpage.Text, tabpage.Font, Brushes.Black, (tabpage.Width - size.Width) / 2, (tabpage.Height - size.Height) / 2);
}
```
2. 添加一个自定义控件类,继承自TabPage,重写OnPaint方法,添加以下代码:
```csharp
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
// 不显示边框颜色
ControlPaint.DrawBorder(e.Graphics, this.ClientRectangle, Color.Transparent, ButtonBorderStyle.None);
}
```
3. 在窗体中使用自定义控件类,即可实现TabControl控件tabpage标签页边缘变成圆角、不显示边框颜色、标签文字侧着显示的效果。
需要注意的是,上述代码中使用了一个自定义的GraphicsPath类,在AddRoundRectangle方法中设置了圆角大小,可以根据需要进行调整。
阅读全文