在 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。 DrawStringMeasureString.

需要此标志

要使用更大的选项卡,您可以使用以下任一选项:

  1. 控件会自动为使用 TabControlFont 绘制的文本提供足够的空间。您可以简单地添加额外的空间,使用 Padding 属性。 Padding 属性 指定控件标签页上每个项目周围 space 的数量。

  2. 您可以将 ItemSize 设置为更大的尺寸并将 SizeMode 设置为 Fixed

ItemSize.Width 对页眉宽度没有任何影响,除非您将 SizeMode 设置为 Fixed。这是您在控件中看到意外宽度的原因。