我有TabControl
个五个标签,DrawMode
设置为OwnerDrawFixed
。我实际上尝试做的是将最后一个标签页的字体颜色从黑色更改为蓝色。以下处理DrawItem
- 事件的代码工作正常,并显示以下选项卡:
代码:
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:
当我点击其中一个标签时,标题字体本身会发生一些变化,它会变得有点“粗”。我真的不知道如何描述它,所以这是一张图片:
我在这里做的是点击前三个标签。我已经知道这是因为DrawItem
- 事件描绘了现有的字体。
所以现在我的问题是:我可以“重置”处理程序内部的标题页面的字体,这样每次都不会绘制字体,并在事件被触发时变得更粗?
我已经尝试过使用e.Graphics.Clear()
(因为我认为它只会“清除”标题),但是当我使用e.Graphics.DrawString()
绘制它时,这并不会显示标题标题。
有谁知道如何绕过这种“过度涂抹”的过程?
编辑:
我发现,只有当您将TabControl
的属性Appearance
设置为Buttons
时才会出现此行为,就像我一样。其他值不会导致行为发生。
当Appearance
属性设置为Buttons
时,有没有可能绕过这个?