更改 tabControl 的 Tab 大小

Change the Tab size of tabControl

我为 TabControl 重新绘制了 Tab 的图形,但是我无法设置它的 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 {}
}

谢谢

不幸的是,没有 built-in 属性 来控制 TabControl TabPages' 选项卡 header 的宽度individually(编辑:显然,有TabControl.ItemSize来共同控制它。参见TaW's answer to fix the width of all tab pages under a tab control)。

但是您可以做一个小技巧,就是在 TabPage.Text 的左侧或右侧添加额外的 spaces,以便为您的图标提供足够的 space。

没有space:

7 spaces:

放上你的图标就够了

实际上您可以设置选项卡的大小,但不能单独设置。

SizeMode = FixedTabControl.Itemsize 的一些合适值的组合将创建任何大小,但始终相同..:[=​​13=]

因此,要单独放大每个选项卡以使图标适合您,您确实需要使用 Ian 的 'spacey' 方法..

使用它...

private void FrmSqlMain_Load(object sender, EventArgs e)
 {
     myTabControl.SizeMode = TabSizeMode.Normal;
     myTabControl.DrawMode = TabDrawMode.OwnerDrawFixed;
 }

尝试增加 "myTabControl.Padding.X"。对我有用!

另外我想补充一点。起初,我尝试添加空格,但它似乎不适合我。后来,我意识到我必须添加比平时更多的空格才能看到差异。