Да, никакой код win32 не нужен. Вам просто нужно установить свойство DrawMode для элементов управления вкладками в OwnerDrawFixed, а затем обработать событие DrawItem элемента управления для вкладок.
Следующий код показывает, как:
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 в OwnerDrawnFixed означает, что каждая кнопка вкладки должна быть одинакового размера (т.е. фиксированной).
Однако если вы хотите изменить размер всех кнопок вкладки, вы можете установить для свойства SizeMode элемента управления вкладкой значение «Fixed», а затем изменить свойство ItemSize.