在TabControl

时间:2016-08-14 14:04:46

标签: c# winforms tabcontrol

我不喜欢TabControl,他们看起来很难看。所以我创建了自己的自定义绘制TabControl。标题高度我有一些问题。我的控制如下所示:

enter image description here

控制构造函数:

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); 

但是在更改字体大小或标题文本时,宽度会返回错误的值。

enter image description here

有没有办法增加标题的宽度和高度?

3 个答案:

答案 0 :(得分:4)

要拥有更大的标签,您可以使用以下任一选项:

  1. 控件会自动为Font的{​​{1}}提取足够的文本空间。您可以使用Padding属性添加额外的空间。 TabControl属性指定控件选项卡页面上每个项目周围的空间量。

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

  3. 除非您将SizeMode设置为Fixed,否则

    ItemSize.Width对标题宽度没有任何影响。这是您在控件中看到的意外宽度的原因。

答案 1 :(得分:3)

使用Graphics.MeasureString方法获取当前使用的字体的大小(宽度和高度),以便更正宽度和宽度。自定义绘制的标签组件的高度。

答案 2 :(得分:1)

您似乎需要StringFormatFlags NoWrap标记才能禁止多行标题。 DrawStringMeasureString需要此标记。

相关问题