Существует ли способ окрасить вкладки вкладки в winforms?

Я изо всех сил пытаюсь найти способ окрасить заголовки вкладки вкладки в WinForms. Существуют решения окрасить текущую индексируемую вкладку с помощью события OnDrawItem, но может это быть возможным окрасить все вкладки с различными цветами за один раз для создания их интуитивными для пользователя для определенного поведения.

Заранее спасибо,

Rajeev Ranjan Lall

27
задан Rajeev Ranjan Lal 21 January 2010 в 07:06
поделиться

2 ответа

Да, нет необходимости в любом коде 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 вкладки «Фиксированный», а затем изменить свойство элементов.

30
ответ дан 28 November 2019 в 04:22
поделиться

Используя текущий контроль за вкладками, если возможно потребуется много выигрышных-32 событий (там может быть предварительно обернутая реализация). Другой альтернативой может быть замена контроля третьей стороны с вкладками; я уверен, что многие продавцы продадут вам такую замену.

IMO, вам может показаться менее болезненным взглянуть на WPF; это большое изменение, но у него больше контроля над такими вещами. При необходимости вы можете разместить WPF внутри выигрышных форм (если вы не можете оправдать полную замену, что является довольно распространенной реальностью).

2
ответ дан 28 November 2019 в 04:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: