在 TabControl 中增加 Headers 的宽度和高度
Increase Width and Height of Headers in TabControl
我不喜欢TabControl
,它们看起来很难看。所以我正在创建自己的自定义绘制 TabControl
。 header 身高有些问题。我的控件如下所示:
控制构造函数:
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(Conbut trolStyles.OptimizedDoubleBuffer, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
this.DrawMode = TabDrawMode.OwnerDrawFixed;
和OnPaintBackground
:
var g = pevent.Graphics;
var Count = this.TabCount - 1;
int Offset = 2;
int index = 0;
foreach (TabPage itemtab in this.TabPages)
{
//SizeF sz = g.MeasureString(itemtab.Text, this.Font);
var tabrect = this.GetTabRect(index);
var headerrect = new Rectangle(tabrect.Left + Offset, tabrect.Y, tabrect.Width, tabrect.Height);
DrawRoundedRectangle(g, Headerbrush, headerrect, 3);
g.DrawString(itemtab.Text, this.Font, textbrush, headerrect, str);
if (index < Count) index++;
}
我尝试添加这一行:
this.ItemSize = new Size(100, 30);
但在更改字体大小或 header 的文本时,宽度 returns 值错误。
有没有办法增加 header 的宽度和高度?
使用Graphics.MeasureString方法获取当前使用字体的大小(宽&高),以修正自定义绘制的tab组件的宽&高
您似乎需要 StringFormatFlags
NoWrap
标志来禁止多行 header。 DrawString
和 MeasureString
.
需要此标志
要使用更大的选项卡,您可以使用以下任一选项:
控件会自动为使用 TabControl
的 Font
绘制的文本提供足够的空间。您可以简单地添加额外的空间,使用 Padding
属性。 Padding
属性 指定控件标签页上每个项目周围 space 的数量。
您可以将 ItemSize
设置为更大的尺寸并将 SizeMode
设置为 Fixed
。
ItemSize.Width
对页眉宽度没有任何影响,除非您将 SizeMode
设置为 Fixed
。这是您在控件中看到意外宽度的原因。
我不喜欢TabControl
,它们看起来很难看。所以我正在创建自己的自定义绘制 TabControl
。 header 身高有些问题。我的控件如下所示:
控制构造函数:
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(Conbut trolStyles.OptimizedDoubleBuffer, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
this.DrawMode = TabDrawMode.OwnerDrawFixed;
和OnPaintBackground
:
var g = pevent.Graphics;
var Count = this.TabCount - 1;
int Offset = 2;
int index = 0;
foreach (TabPage itemtab in this.TabPages)
{
//SizeF sz = g.MeasureString(itemtab.Text, this.Font);
var tabrect = this.GetTabRect(index);
var headerrect = new Rectangle(tabrect.Left + Offset, tabrect.Y, tabrect.Width, tabrect.Height);
DrawRoundedRectangle(g, Headerbrush, headerrect, 3);
g.DrawString(itemtab.Text, this.Font, textbrush, headerrect, str);
if (index < Count) index++;
}
我尝试添加这一行:
this.ItemSize = new Size(100, 30);
但在更改字体大小或 header 的文本时,宽度 returns 值错误。
有没有办法增加 header 的宽度和高度?
使用Graphics.MeasureString方法获取当前使用字体的大小(宽&高),以修正自定义绘制的tab组件的宽&高
您似乎需要 StringFormatFlags
NoWrap
标志来禁止多行 header。 DrawString
和 MeasureString
.
要使用更大的选项卡,您可以使用以下任一选项:
控件会自动为使用
TabControl
的Font
绘制的文本提供足够的空间。您可以简单地添加额外的空间,使用Padding
属性。Padding
属性 指定控件标签页上每个项目周围 space 的数量。您可以将
ItemSize
设置为更大的尺寸并将SizeMode
设置为Fixed
。
ItemSize.Width
对页眉宽度没有任何影响,除非您将 SizeMode
设置为 Fixed
。这是您在控件中看到意外宽度的原因。