none
Nombre de las fichas no se ven en left

    Question

  • En el tabControl1, propiedad "alignment", se puede colocar las fichas en la parte superior, inferior, izquierda o derecha del control. Si le pongo el valor Left, se pone la ficha a la izquierda pero no muestra el nombre de laficha, que al menos se debería ver en vertical. He descubierto que en la propiedad appearance pongo valor Buttons, se ve las letras pero no las del estilo de siempre y encima deforma la ficha. Esa opción no me interesa, me interesa que se vea como siempre, normalito. Mi pregunta es.... ¿Cué hago para que se muestren el nombre de las fichas en ese modo alingment left?
    Thursday, January 25, 2007 5:40 PM

Answers

  • Hola. Lo que necesitas es que se muestren de forma vertical, me parece. Para ello, al tabControl1 cambia la propiedad DrawMode a OwnerDrawFixed. Luego, subscríbete al event DrawItem. El siguiente código hace lo propio:

    private void tabControl1_DrawItem(object sender, DrawItemEventArgs e)
    {
        Brush backBrush = new SolidBrush(e.BackColor);
        e.Graphics.FillRectangle(backBrush, e.Bounds);
    
        Rectangle rect = new Rectangle(e.Bounds.X + 3, e.Bounds.Y + 3 , e.Bounds.Width - 3, e.Bounds.Height - 3);
        string tabName = (sender as TabControl).TabPages[e.Index].Text;
        StringFormat format = new StringFormat();
        format.Alignment = StringAlignment.Center;
        format.FormatFlags = StringFormatFlags.DirectionVertical;
    
        Brush foreBrush = new SolidBrush(Color.Black);
        e.Graphics.DrawString(tabName, e.Font, foreBrush, rect, format);
    
        backBrush.Dispose();
        foreBrush.Dispose();
        format.Dispose();
    }

    La parte importante es la del format.FormatFlags, donde le decimos que queremos que el texto se alinee de forma vertical. Todo lo demás está encaminado a dibujar el elemento tal cuál. 

    Espero sirva. 

    Saludos. 


    Fernando Gómez
    www.fermasmas.com
    Thursday, September 24, 2009 9:24 PM