更改tabControl的Tab大小

Lor*_*nti 7 c# tabcontrol visual-studio winforms

我重新绘制的图形TabTabControl,但我不能设置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'方法.


Ian*_*Ian 9

不幸的是,没有内置的属性来控制宽度TabPages'的选项卡头TabControl 单独(编辑:很显然,有TabControl.ItemSize共同控制它见TAW的答案来解决一个选项卡控制下的所有选项卡页面的宽度).

但是你可以做的一个小技巧是spaces在左侧或右侧增加额外的TabPage.Text空间,为你的图标提供足够的空间.

没有空间:

在此输入图像描述

有7个空格:

在此输入图像描述

它应该足以放置你的图标

  • @LorenzoBelfanti“野蛮”——我同意。;) 该解决方案具有简单性的优点,但不会丢失任何内置的选项卡标题绘制和大小调整行为。假设您通过自定义方法重新调整选项卡标题的大小,则必须正确覆盖选项卡标题的内置“Paint” (2认同)

小智 7

尝试增加“myTabControl.Padding.X”。这个对我有用!