Oui, le code win32 n'est pas nécessaire. Vous devez juste définir la propriété DrawMode des onglets sur 'OwnerDrawFixed', puis gérer l'événement DrawItem du contrôle onglet.
Le code suivant montre comment:
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);
}
Réglage de la DrawMode à « OwnerDrawnFixed » signifie que chaque bouton onglet doit être de la même taille (c.-à-fixe). Toutefois, si vous souhaitez modifier la taille de tous les boutons d'onglets, vous pouvez définir la propriété SizeMode du contrôle Onglet sur "Fixe", puis modifier la propriété ItemSize.
Fonctionne très bien, mais comment changeriez-vous la couleur de la zone derrière les onglets? – Roast