Gewusst wie: Anzeigen von seitlich ausgerichteten Registerkarten mit TabControl

Aktualisiert: November 2007

Die Alignment-Eigenschaft von TabControl unterstützt das vertikale Anzeigen von Registerkarten (ausgerichtet am linken oder rechten Rand des Steuerelements), im Gegensatz zur horizontalen Ausrichtung (am oberen oder unteren Rand des Steuerelements). In der Standardeinstellung ist die vertikale Anzeige nicht sehr benutzerfreundlich, da die Text-Eigenschaft des TabPage-Objekts in der Registerkarte nicht angezeigt wird, wenn visuelle Stile aktiviert sind. Es gibt auch keine direkte Möglichkeit, die Ausrichtung des Texts innerhalb der Registerkarte zu steuern. Sie können Ownerdrawn auf TabControl verwenden, um dies zu verbessern.

In der folgenden Verfahrensweise wird erläutert, wie das "Ownerdrawn"-Feature verwendet wird, um rechtsbündige Registerkarten mit Text in Links-nach-Rechts-Lesefolge anzuzeigen.

So zeigen Sie rechtsbündige Registerkarten an

  1. Fügen Sie dem Formular einen TabControl hinzu.

  2. Legen Sie die Alignment-Eigenschaft auf Right fest.

  3. Legen Sie die SizeMode-Eigenschaft auf Fixed fest, sodass alle Registerkarten gleich breit sind.

  4. Legen Sie die ItemSize-Eigenschaft auf die gewünschte feste Größe für die Registerkarten fest. Beachten Sie, dass die ItemSize-Eigenschaft sich verhält, als seien die Registerkarten am oberen Rand, obwohl sie rechtsbündig ausgerichtet sind. Sie müssen daher die Height-Eigenschaft ändern, um die Registerkarten zu verbreitern, und die Width-Eigenschaft, um ihre Höhe zu ändern.

    Im folgenden Codebeispiel ist Width auf 25 und Height auf 150 festgelegt.

  5. Legen Sie die DrawMode-Eigenschaft auf OwnerDrawFixed fest.

  6. Definieren Sie einen Handler für das DrawItem-Ereignis von TabControl, das den Text von links nach rechts darstellt.

    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
    

Siehe auch

Weitere Ressourcen

TabControl-Steuerelement (Windows Forms)