У меня есть TabControl
с пятью вкладками и DrawMode
, установленным на OwnerDrawFixed
. Что я на самом деле пытаюсь сделать, это изменить цвет шрифта заголовка последней вкладки с черного на синий. Следующий код, который обрабатывает DrawItem
-Event, работает нормально и показывает также следующие вкладки:
Код:
private void tabControl_DrawItem(object sender, DrawItemEventArgs e)
{
if (e.Index == 4)
{
e.Graphics.DrawString("Notifications", new Font(tabControl.Font, FontStyle.Bold), new SolidBrush(SystemColors.HotTrack), new PointF(e.Bounds.X + 2, e.Bounds.Y + 3));
}
else
{
e.Graphics.DrawString(tabControl.TabPages[e.Index].Text, tabControl.Font, Brushes.Black, new PointF(e.Bounds.X + 5, e.Bounds.Y + 3));
}
}
GUI:
![enter image description here](https://i.stack.imgur.com/KzuXI.jpg)
Как только я нажимаю на одну из вкладок, сам шрифт заголовка немного меняется, он становится немного "толще". Я действительно не знаю, как это описать, так что вот картинка:
![enter image description here](https://i.stack.imgur.com/wcBMs.jpg)
То, что я здесь делал, щелкало первые три вкладки. Я уже знаю, что из-за DrawItem
-Event закрашивается уже существующий шрифт.
Итак, мой вопрос теперь таков: могу ли я «сбросить» шрифт заголовка вкладки внутри обработчика, чтобы шрифт не закрашивался каждый раз и становился более толстым при срабатывании события?
Я уже пытался использовать e.Graphics.Clear()
(потому что думал, что это просто "очистит" заголовок), однако это не показывает заголовок впоследствии, когда я рисую его, используя e.Graphics.DrawString()
.
У кого-нибудь есть идеи, как обойти этот "процесс перекраски"?
EDIT:
Я понял, что такое поведение происходит только тогда, когда вы устанавливаете свойство TabControl
Appearance
в Buttons
, как я это сделал. Другие значения не приводят к возникновению такого поведения.
Так есть ли возможность обойти это, когда свойство Appearance
установлено в Buttons
?