我重绘Tab
TabControl
的图片,但我无法设置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 {}
}
由于
答案 0 :(得分:12)
实际上,您可以设置标签的大小,但不能单独设置。
SizeMode = Fixed
和TabControl.Itemsize
的某个合适值的组合将创建任何大小,但始终相同..:
因此,为了单独放大每个标签以使图标适合你确实需要使用Ian的'spacey'方法..
答案 1 :(得分:8)
不幸的是,没有内置属性可以单独控制TabPages'
的TabControl
标签标题的宽度(编辑:显然,有{{ 1}}集体控制它。请参阅TaW的答案,以修复选项卡控件下所有标签页的宽度)。
但是,你可以做的一个小技巧是在TabControl.ItemSize
的左侧或右侧提供额外的spaces
,为您的图标留出足够的空间。
没有空间:
有7个空格:
放置图标
就足够了答案 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)
我还要添加一件事。刚开始,我尝试添加空格,但似乎对我来说不起作用。后来,我意识到我必须比平时增加更多的空间才能看到区别。