2013-12-01 6 views
2

У меня проблема с моим TabControl. У меня есть различные вкладки, установленные в вертикальном режиме, и они немного скорректированы. Вот картина того, что она выглядит следующим образом:Изменить цвет шрифта на активной вкладке

tabcontrol

И я удивляюсь, как я мог бы изменить от красного до некоторой светло-голубого цвета, и, возможно, изменить серый цвет фона для немного светлее. Я пытался последовать совету другого парня я нашел через Google о том, как изменить шрифт полужирный и попытался это:

InitializeComponent(); 
tabControl1.DrawMode = TabDrawMode.OwnerDrawFixed; 
tabControl1.DrawItem += new DrawItemEventHandler(tabControl1_DrawItem); 

private void tabControl1_DrawItem_1(object sender, DrawItemEventArgs e) 
{ 
    if (e.Index == tabControl1.SelectedIndex) 
    { 
     e.Graphics.DrawString(tabControl1.TabPages[e.Index].Text, 
      new Font(tabControl1.Font, FontStyle.Bold), 
      Brushes.Aqua, 
      new PointF(e.Bounds.X + 3, e.Bounds.Y + 3)); 
    } 
    else 
    { 
     e.Graphics.DrawString(tabControl1.TabPages[e.Index].Text, 
      tabControl1.Font, 
      Brushes.Aqua, 
      new PointF(e.Bounds.X + 3, e.Bounds.Y + 3)); 
    } 
} 

Это не работает. Ни цвет, ни шрифт не были выделены жирным шрифтом или аква. У кого-нибудь есть идеи, как изменить его? По какой-то причине у меня возникли проблемы с изменением цветов после изменения свойств DrawMode на OwnerDrawFixed - что мне нужно, чтобы иметь возможность использовать эти выровненные по вертикали вкладки.

Редактировать: я не хочу менять шрифт/цвета на фактической закладке, только вкладку слева.

ответ

5

Способ tabControl1_DrawItem_1 обеспечивает то, что вы хотите; проблема с вашим кодом заключается в том, что вы не прикрепляете его к DrawItem Event. Просто замените:

tabControl1.DrawItem += new DrawItemEventHandler(tabControl1_DrawItem); 

С:

tabControl1.DrawItem += new DrawItemEventHandler(tabControl1_DrawItem_1); 

ПОЯСНЕНИЯ:

tabControl1_DrawItem_1 назначает тот же цвет всех вкладок (выбран или нет). Если вы хотите получить другой цвет для выбранных/не выбранных вкладок, вам придется изменить это в части else. Пример:

private void tabControl1_DrawItem_1(object sender, DrawItemEventArgs e) 
{ 
    if (e.Index == tabControl1.SelectedIndex) 
    { 
     e.Graphics.DrawString(tabControl1.TabPages[e.Index].Text, 
      new Font(tabControl1.Font, FontStyle.Bold), 
      Brushes.Aqua, 
      new PointF(e.Bounds.X + 3, e.Bounds.Y + 3)); 
    } 
    else 
    { 
     e.Graphics.DrawString(tabControl1.TabPages[e.Index].Text, 
      tabControl1.Font, 
      Brushes.Black, 
      new PointF(e.Bounds.X + 3, e.Bounds.Y + 3)); 
    } 
} 
+0

Изменил он и до сих пор не вижу полужирный текст или аква цвет. –

+0

@ user3036459 Если вы откроете новый проект, добавьте в него tabcontrol (называемый 'tabControl1'), напишите' tabControl1.DrawMode = TabDrawMode.OwnerDrawFixed; tabControl1.DrawItem + = новый DrawItemEventHandler (tabControl1_DrawItem_1); 'в событии Load Load и включает метод tabControl1_DrawItem_1', он будет отображать шрифты вкладок как жирным, так и цветом aqua. Пожалуйста, укажите весь код, чтобы узнать, что может быть проблемой в вашем случае. – varocarbas

+0

Вверните его, я не могу заставить его работать. К счастью, цвета по умолчанию были серыми и красными и не похожими на лимонно-зеленые и розовые ха-ха. –

0

Если событие не срабатывает режим управления раздаточной вкладки изменения в TabDrawMode.OwnerDrawFixed. Также я предлагаю изменить внешний вид элемента управления вкладки в один из типов кнопок. Это избежать проблем с пограничной линии краска

Полный код как

public YourClassConstructor() 
{ 
    this.tcRemontas.DrawMode = TabDrawMode.OwnerDrawFixed; 
    this.tcRemontas.Appearance = TabAppearance.FlatButtons; 
    tcRemontas.DrawItem += TcRemontas_DrawItem; 
} 

private void TcRemontas_DrawItem(object sender, DrawItemEventArgs e) 
{ 
    TabControl tabControl = sender as TabControl; 

    if (e.Index == tabControl.SelectedIndex) 
    { 
     e.Graphics.DrawString(tabControl.TabPages[e.Index].Text, 
      new Font(tabControl.Font, FontStyle.Bold), 
      Brushes.Black, 
      new PointF(e.Bounds.X + 3, e.Bounds.Y + 3)); 
    } 
    else 
    { 
     e.Graphics.DrawString(tabControl.TabPages[e.Index].Text, 
      tabControl.Font, 
      Brushes.Black, 
      new PointF(e.Bounds.X + 3, e.Bounds.Y + 3)); 
    } 
} 
Смежные вопросы