Markieren Sie das Kontrollkästchen Englisch, um die englische Version dieses Artikels anzuzeigen. Sie können den englischen Text auch in einem Popup-Fenster einblenden, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Gewusst wie: Anzeigen von seitlich ausgerichteten Registerkarten mit TabControl

 

Die Alignment-Eigenschaft des TabControl unterstützt das vertikale Anzeigen von Registerkarten (entlang des linken oder rechten Rands des Steuerelements), im Gegensatz zu horizontal (am oberen oder unteren Rand des Steuerelements). Standardmäßig führt diese vertikale Anzeige zu einer wenig benutzerfreundlichen Oberfläche, weil die Text-Eigenschaft des TabPage-Objekts nicht auf der Registerkarte angezeigt wird, wenn visuelle Stile aktiviert sind. Es ist außerdem keine direkte Möglichkeit zur Steuerung der Richtung des Texts auf der Registerkarte. Sie können Ownerdrawn in TabControl verwenden, um die Oberfläche zu verbessern.

Das folgende Verfahren zeigt, wie rechtsbündig ausgerichtete Registerkarten gerendert werden, wobei der Registerkartentext von links nach rechts verläuft, indem Sie die Funktion "Ownerdrawn" verwenden.

So zeigen Sie rechtsbündig ausgerichtete Registerkarten an

  1. Fügen Sie Ihrem Formular ein TabControl hinzu.

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

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

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

    Für ein optimales Ergebnis mit dem folgenden Codebeispiel legen Sie die Width der Registerkarten auf 25 und die Height auf 100 fest.

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

  6. Definieren Sie einen Ereignishandler für das DrawItem-Ereignis des TabControl, das 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", (float)10.0, 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));
    }
    
Anzeigen: