Ja, es ist kein Win32-Code erforderlich. Sie müssen nur die DrawMode-Eigenschaft der Registersteuerelemente auf "OwnerDrawFixed" festlegen und dann das DrawItem-Ereignis des Registersteuerelements verarbeiten.
Der folgende Code zeigt, wie:
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);
}
die DrawMode zu 'OwnerDrawnFixed' Einstellung bedeutet, dass jeder Reiter-Taste die gleiche Größe sein muss (dh Fixed).
Wenn Sie jedoch die Größe aller Registerkarten ändern möchten, können Sie die SizeMode-Eigenschaft des Registerkartensteuerelements auf "Fixed" setzen und dann die ItemSize-Eigenschaft ändern.
Funktioniert gut, aber wie würden Sie die Farbe des Bereichs hinter den Tabs ändern? – Roast