更改 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 = Fixed
和 TabControl.Itemsize
的一些合适值的组合将创建任何大小,但始终相同..:[=13=]
因此,要单独放大每个选项卡以使图标适合您,您确实需要使用 Ian 的 'spacey' 方法..
使用它...
private void FrmSqlMain_Load(object sender, EventArgs e)
{
myTabControl.SizeMode = TabSizeMode.Normal;
myTabControl.DrawMode = TabDrawMode.OwnerDrawFixed;
}
尝试增加 "myTabControl.Padding.X"。对我有用!
另外我想补充一点。起初,我尝试添加空格,但它似乎不适合我。后来,我意识到我必须添加比平时更多的空格才能看到差异。
我为 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 = Fixed
和 TabControl.Itemsize
的一些合适值的组合将创建任何大小,但始终相同..:[=13=]
因此,要单独放大每个选项卡以使图标适合您,您确实需要使用 Ian 的 'spacey' 方法..
使用它...
private void FrmSqlMain_Load(object sender, EventArgs e)
{
myTabControl.SizeMode = TabSizeMode.Normal;
myTabControl.DrawMode = TabDrawMode.OwnerDrawFixed;
}
尝试增加 "myTabControl.Padding.X"。对我有用!
另外我想补充一点。起初,我尝试添加空格,但它似乎不适合我。后来,我意识到我必须添加比平时更多的空格才能看到差异。