繁体   English   中英

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

谢谢

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

SizeMode = Fixed和一些合适的TabControl.Itemsize值的组合将创建任何大小,但始终相同..:

在此处输入图片说明

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

不幸的是,没有内置属性来单独控制TabControlTabPages'标签页眉的宽度(编辑:显然,有TabControl.ItemSize来共同控制它。请参阅 TaW 的答案以修复所有标签页的宽度在选项卡控件下)。

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

无空间:

在此处输入图片说明

有 7 个空格:

在此处输入图片说明

放置你的图标应该足够了

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

用它...

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

我还想补充一件事。 起初,我尝试添加空格,但似乎对我不起作用。 后来,我意识到我必须添加比平时更多的空格才能看到差异。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM