更改tabControl的Tab大小

时间:2016-02-02 13:59:14

标签: c# winforms visual-studio tabcontrol

我重绘Tab TabControl的图片,但我无法设置Width

我想要的是Tab的文字和图标的大小都包含在内。

现在是这样的:

tabs are overlaid

我的代码

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 {}
}

由于

5 个答案:

答案 0 :(得分:12)

实际上,您可以设置标签的大小,但不能单独设置。

SizeMode = FixedTabControl.Itemsize的某个合适值的组合将创建任何大小,但始终相同..:

enter image description here

因此,为了单独放大每个标签以使图标适合你确实需要使用Ian的'spacey'方法..

答案 1 :(得分:8)

不幸的是,没有内置属性可以单独控制TabPages' TabControl标签标题的宽度(编辑:显然,有{{ 1}}集体控制它。请参阅TaW的答案,以修复选项卡控件下所有标签页的宽度)。

但是,你可以做的一个小技巧是在TabControl.ItemSize的左侧或右侧提供额外的spaces,为您的图标留出足够的空间。

没有空间:

enter image description here

有7个空格:

enter image description here

放置图标

就足够了

答案 2 :(得分:3)

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

答案 3 :(得分:1)

使用它...

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

答案 4 :(得分:1)

我还要添加一件事。刚开始,我尝试添加空格,但似乎对我来说不起作用。后来,我意识到我必须比平时增加更多的空间才能看到区别。