Я перерисовываю графику Tab
для TabControl
, но я не могу установить Width
.Изменение размера вкладки tabControl
Что я хочу, так это то, что текст 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 {}
}
Благодаря
Решение действительно варварское, но если это единственный способ ... –
@LorenzoBelfanti «Barbaric» --- Согласен. ;) Это решение имеет преимущество простоты, не теряя при этом никаких встроенных покрасок и размеров. Предположим, что вы изменили размер заголовка вкладки по специальному методу, встроенный 'Paint' для заголовка вкладки должен быть полностью переопределен – Ian