Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Alignment Eigenschaft unterstützt die vertikale Anzeige von TabControl Registerkarten (entlang des linken oder rechten Rands des Steuerelements) und nicht horizontal (über den oberen oder unteren Rand des Steuerelements). Standardmäßig führt diese vertikale Anzeige zu einer schlechten Benutzererfahrung, da die Text Eigenschaft des TabPage Objekts nicht auf der Registerkarte angezeigt wird, wenn visuelle Formatvorlagen aktiviert sind. Es gibt auch keine direkte Möglichkeit, die Richtung des Texts auf der Registerkarte zu steuern. Sie können Owner-Draw auf TabControl verwenden, um diese Erfahrung zu verbessern.
Das folgende Verfahren zeigt, wie rechtsbündige Registerkarten gezeichnet werden, wobei der Registerkartentext von links nach rechts angezeigt wird, mithilfe des Features "Benutzerdefinierte Zeichnung".
So zeigen Sie rechtsbündige Registerkarten an
Fügen Sie Ihrem Formular ein TabControl hinzu.
Legen Sie die SizeMode Eigenschaft auf Fixed, sodass alle Registerkarten die gleiche Breite aufweisen.
Setzen Sie die ItemSize-Eigenschaft auf die bevorzugte feste Größe für die Registerkarten. Beachten Sie, dass sich die ItemSize Eigenschaft so verhält, als ob sich die Registerkarten oben befinden, obwohl sie rechtsbündig ausgerichtet sind. Um die Registerkarten breiter zu machen, müssen Sie die Height Eigenschaft ändern, und um sie höher zu machen, müssen Sie die Width Eigenschaft ändern.
Um optimale Ergebnisse mit dem folgenden Codebeispiel zu erzielen, setzen Sie die Tabs auf 25 für Width und 100 für Height fest.
Legen Sie die DrawMode-Eigenschaft auf OwnerDrawFixed fest.
Definieren Sie einen Handler für das DrawItem Ereignis von TabControl, der den Text von links nach rechts rendert.
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
Siehe auch
.NET Desktop feedback