Lor*_*nti 7 c# tabcontrol visual-studio winforms
我重新绘制的图形Tab的TabControl,但我不能设置Width它.
我想要的是,文字Tab和图标的文字包含在其大小中.
现在是这样的:
我的守则
private void tabControlForm_DrawItem(object sender, DrawItemEventArgs e)
{
try
{
using (Brush br = new SolidBrush(TabColors[tabControlForm.TabPages[e.Index]]))
{
Rectangle rect = e.Bounds;
rect.Width += 10;
e.Graphics.FillRectangle(br, rect);
SizeF sz = e.Graphics.MeasureString(tabControlForm.TabPages[e.Index].Text, e.Font);
e.Graphics.DrawString(tabControlForm.TabPages[e.Index].Text, e.Font, Brushes.Black, rect.Left + (rect.Width - sz.Width) / 2, rect.Top + (rect.Height - sz.Height) / 2 + 1);
using (var src = new Bitmap(System.Reflection.Assembly.GetEntryAssembly().GetManifestResourceStream("Castor.Gestionale.images.close-button.png")))
{
e.Graphics.DrawImage(src, rect.Right - 18, rect.Top + 10);
}
e.Graphics.DrawRectangle(Pens.DarkGray, rect);
e.DrawFocusRectangle();
}
}
catch {}
}
Run Code Online (Sandbox Code Playgroud)
谢谢
TaW*_*TaW 14
实际上,您可以设置选项卡的大小,但不能单独设置.
该组合SizeMode = Fixed和一些合适的值TabControl.Itemsize将创建任何大小,但始终相同..:
因此,为了单独放大每个标签以使图标适合,您确实需要使用Ian的'spacey'方法.
不幸的是,没有内置的属性来控制宽度TabPages'的选项卡头TabControl 单独(编辑:很显然,有TabControl.ItemSize共同控制它见TAW的答案来解决一个选项卡控制下的所有选项卡页面的宽度).
但是你可以做的一个小技巧是spaces在左侧或右侧增加额外的TabPage.Text空间,为你的图标提供足够的空间.
没有空间:
有7个空格:
它应该足以放置你的图标