Я изо всех сил пытаюсь найти способ окрасить заголовки вкладки вкладки в WinForms. Существуют решения окрасить текущую индексируемую вкладку с помощью события OnDrawItem, но может это быть возможным окрасить все вкладки с различными цветами за один раз для создания их интуитивными для пользователя для определенного поведения.
Заранее спасибо,
Rajeev Ranjan Lall
Да, нет необходимости в любом коде Win32. Вам просто нужно установить вкладку Controls DrawMode свойство «OillDraWFixed», а затем обрабатывать событие DrawItem Control.
Следующий код показывает, как:
private void tabControl1_DrawItem(object sender, DrawItemEventArgs e)
{
// This event is called once for each tab button in your tab control
// First paint the background with a color based on the current tab
// e.Index is the index of the tab in the TabPages collection.
switch (e.Index )
{
case 0:
e.Graphics.FillRectangle(new SolidBrush(Color.Red), e.Bounds);
break;
case 1:
e.Graphics.FillRectangle(new SolidBrush(Color.Blue), e.Bounds);
break;
default:
break;
}
// Then draw the current tab button text
Rectangle paddedBounds=e.Bounds;
paddedBounds.Inflate(-2,-2);
e.Graphics.DrawString(tabControl1.TabPages[e.Index].Text, this.Font, SystemBrushes.HighlightText, paddedBounds);
}
Настройка DrawMode к «OillDrawsed» означает, что каждая кнопка вкладки должна быть одинаковым размером (т.е. фиксировано).
Однако, если вы хотите изменить размер всех кнопок вкладок, вы можете установить свойство Sizemode вкладки «Фиксированный», а затем изменить свойство элементов.
Используя текущий контроль за вкладками, если возможно потребуется много выигрышных-32 событий (там может быть предварительно обернутая реализация). Другой альтернативой может быть замена контроля третьей стороны с вкладками; я уверен, что многие продавцы продадут вам такую замену.
IMO, вам может показаться менее болезненным взглянуть на WPF; это большое изменение, но у него больше контроля над такими вещами. При необходимости вы можете разместить WPF внутри выигрышных форм (если вы не можете оправдать полную замену, что является довольно распространенной реальностью).