Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De eigenschap Alignment van TabControl ondersteunt het verticaal weergeven van tabbladen (links of rechts van het besturingselement), in plaats van horizontaal (boven of onder aan het besturingselement). Deze verticale weergave resulteert standaard in een slechte gebruikerservaring, omdat de eigenschap Text van het TabPage-object niet wordt weergegeven op het tabblad wanneer visuele stijlen zijn ingeschakeld. Er is ook geen directe manier om de richting van de tekst op het tabblad te bepalen. U kunt eigenaar tekenen op TabControl gebruiken om deze ervaring te verbeteren.
In de volgende procedure ziet u hoe u rechts uitgelijnde tabbladen weergeeft, waarbij de tabtekst van links naar rechts wordt uitgevoerd met behulp van de functie 'eigenaar tekenen'.
Rechts uitgelijnde tabbladen weergeven
Voeg een TabControl toe aan uw formulier.
Stel de eigenschap SizeMode in op Fixed, zodat alle tabbladen dezelfde breedte hebben.
Stel de eigenschap ItemSize in op de gewenste vaste grootte voor de tabbladen. Houd er rekening mee dat de eigenschap ItemSize zich gedraagt alsof de tabbladen bovenaan staan, hoewel ze rechts zijn uitgelijnd. Als u de tabbladen breder wilt maken, moet u de eigenschap Height wijzigen en om ze hoger te maken, moet u de eigenschap Width wijzigen.
Voor het beste resultaat met het onderstaande codevoorbeeld stelt u de Width van de tabbladen in op 25 en de Height op 100.
Stel de eigenschap DrawMode in op OwnerDrawFixed.
Definieer een handler voor de DrawItem gebeurtenis van TabControl waarmee de tekst van links naar rechts wordt weergegeven.
public Form1() { // Remove this call if you do not program using Visual Studio. InitializeComponent(); tabControl1.DrawItem += new DrawItemEventHandler(tabControl1_DrawItem); } private void tabControl1_DrawItem(Object sender, System.Windows.Forms.DrawItemEventArgs e) { Graphics g = e.Graphics; Brush _textBrush; // Get the item from the collection. TabPage _tabPage = tabControl1.TabPages[e.Index]; // Get the real bounds for the tab rectangle. Rectangle _tabBounds = tabControl1.GetTabRect(e.Index); if (e.State == DrawItemState.Selected) { // Draw a different background color, and don't paint a focus rectangle. _textBrush = new SolidBrush(Color.Red); g.FillRectangle(Brushes.Gray, e.Bounds); } else { _textBrush = new System.Drawing.SolidBrush(e.ForeColor); e.DrawBackground(); } // Use our own font. Font _tabFont = new Font("Arial", 10.0f, FontStyle.Bold, GraphicsUnit.Pixel); // Draw string. Center the text. StringFormat _stringFlags = new StringFormat(); _stringFlags.Alignment = StringAlignment.Center; _stringFlags.LineAlignment = StringAlignment.Center; g.DrawString(_tabPage.Text, _tabFont, _textBrush, _tabBounds, new StringFormat(_stringFlags)); }Private Sub TabControl1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles TabControl1.DrawItem Dim g As Graphics = e.Graphics Dim _TextBrush As Brush ' Get the item from the collection. Dim _TabPage As TabPage = TabControl1.TabPages(e.Index) ' Get the real bounds for the tab rectangle. Dim _TabBounds As Rectangle = TabControl1.GetTabRect(e.Index) If (e.State = DrawItemState.Selected) Then ' Draw a different background color, and don't paint a focus rectangle. _TextBrush = New SolidBrush(Color.Red) g.FillRectangle(Brushes.Gray, e.Bounds) Else _TextBrush = New System.Drawing.SolidBrush(e.ForeColor) e.DrawBackground() End If ' Use our own font. Dim _TabFont As New Font("Arial", 10.0, FontStyle.Bold, GraphicsUnit.Pixel) ' Draw string. Center the text. Dim _StringFlags As New StringFormat() _StringFlags.Alignment = StringAlignment.Center _StringFlags.LineAlignment = StringAlignment.Center g.DrawString(_TabPage.Text, _TabFont, _TextBrush, _TabBounds, New StringFormat(_StringFlags)) End Sub
Zie ook
.NET Desktop feedback