我不喜欢TabControl
,他们看起来很难看。所以我创建了自己的自定义绘制TabControl
。标题高度我有一些问题。我的控制如下所示:
控制构造函数:
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);
但是在更改字体大小或标题文本时,宽度会返回错误的值。
有没有办法增加标题的宽度和高度?
答案 0 :(得分:4)
要拥有更大的标签,您可以使用以下任一选项:
答案 1 :(得分:3)
使用Graphics.MeasureString方法获取当前使用的字体的大小(宽度和高度),以便更正宽度和宽度。自定义绘制的标签组件的高度。
答案 2 :(得分:1)
您似乎需要StringFormatFlags
NoWrap
标记才能禁止多行标题。 DrawString
和MeasureString
需要此标记。