none
Como alinear varias label RRS feed

Respuestas

  • "Julieta's" preguntó:

    > necestio alinear varias label, con valores

    Hola, Julieta:

    Entiendo que lo que deseas alinear son los valores de los controles Label, no la posición que estos tengan dentro del formulario, los cuales los podrás alinear en tiempo de diseño, uno debajo de otro, o bien haciendo lo que te ha comentado Pedro Avila.

    Si es así, tienes que alinear el texto a la derecha y aplicarle al control una fuente (objeto Font) de ancho fijo, como bien puede ser la fuente Courier New. Por último, el símbolo monetario ($) no puede ir con el valor, porque entonces no se podrían alinear los valores como tu deseas; hay que darle una separación con respecto al valor decimal, separación que se consigue con la función PadLeft de la clase String.

    Para los cinco valores que has especificado, se puede hacer como te indico a continuación. Inicia un nuevo proyecto y añade un control Button en el formulario de inicio. Copia/pega el siguiente código en el formulario y pulsa F5:

    Imports System.Globalization
    
    Public Class Form1
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    
            Dim ci As New CultureInfo("en-US")
            Threading.Thread.CurrentThread.CurrentCulture = ci
    
            For index As Integer = 1 To 5
                Dim lbl As New Label()
                lbl.AutoSize = True
                lbl.ForeColor = Color.FromArgb(192, 0, 0)
                lbl.Font = New Font("Courier New", 18.0!, FontStyle.Bold)
                lbl.Location = New Point(50, index * 40)
                lbl.Name = String.Format("Label{0}", index)
                lbl.Size = New Size(200, 30)
                lbl.Text = lbl.Name
                lbl.TextAlign = ContentAlignment.MiddleRight
                lbl.Parent = Me
            Next
    
        End Sub
    
        Private Sub EstablecerValorLabel(labelName As String, valor As Decimal)
    
            ' Referenciamos el control Label por su nombre
            '
            Dim lbl As Label = DirectCast(Me.Controls.Find(labelName, True).FirstOrDefault(), Label)
    
            ' Símbolo de moneda correspondiente a la configuración regional
            ' del subproceso actual.
            '
            Dim currencySymbol As String = _
                Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencySymbol
    
            lbl.Text = currencySymbol & String.Format("{0:N2}", valor).PadLeft(10)
    
        End Sub
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    
            EstablecerValorLabel("Label1", 12.6D)
            EstablecerValorLabel("Label2", 5.4D)
            EstablecerValorLabel("Label3", 13.4D)
            EstablecerValorLabel("Label4", 143D)
            EstablecerValorLabel("Label5", 330D)
    
        End Sub
    
    End Class

    Tienes que hacer clic en el control Button para establecer los cinco valores, y el resultado es el que se muestra en la siguiente imagen:

    He tenido que establecer una configuración regional de inglés de Estados Unidos porque mi sistema operativo es el español. Si tu aplicación va a ejecutarse en sistemas operativos con una configuración de inglés de Estados Unidos, elimina todo lo referente al objeto CultureInfo.

    Fíjate bien en las propiedades que le asigno a los objetos Label que creo en tiempo de ejecución, en concreto en las propiedades Font TextAlign. Los valores de las restantes propiedades las dejo a tu elección. ;-)

    NOTA: Como al ir a publicar la respuesta me he dado cuenta que has marcado como satisfactoria tu última respuesta, vuélvela a marcar si mi respuesta no cumple con lo que esperabas. ¿OK?

    Un saludo


    Enrique Martínez
      [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, activa la instrucción Option Strict.


    viernes, 14 de junio de 2013 4:44
    Moderador

Todas las respuestas

  • Hola seleccionas todos los label que quieras alinear y haces lo que muestra la imagen


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    • Propuesto como respuesta Pau CP viernes, 14 de junio de 2013 11:15
    jueves, 13 de junio de 2013 23:36
  • Y los valores que toman las label, en este caso los numeros como los puedo alinear por que no doy como ?...si te das cuenta se ve super mal esa alineacion
    jueves, 13 de junio de 2013 23:42
  • Selecciona todos los label números y correlos a la derecha 

    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    jueves, 13 de junio de 2013 23:45
  • Los valores siempre varian pero quiesiera que quedaran asi mira, la foto la edite...

    jueves, 13 de junio de 2013 23:57
  • Selecciona todos los label de numeros y alinealos a los lados derechos asi como muestro en la imagen

    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    jueves, 13 de junio de 2013 23:59
  • Ya lo hize pedrito, pero no sale, no entiendo por que.......
    viernes, 14 de junio de 2013 0:06
  • Bueno yo sola encontre la respuesta, la comparto con todos....

       TOTAL_Hotel.Location = New Point(195 - TOTAL_Hotel.Size.Width, TOTAL_Hotel.Location.Y)

    • Marcado como respuesta Julieta's viernes, 14 de junio de 2013 4:16
    • Desmarcado como respuesta Enrique M. MontejoModerator viernes, 14 de junio de 2013 4:44
    • Propuesto como respuesta O. Melián viernes, 14 de junio de 2013 12:26
    • Votado como útil O. Melián viernes, 14 de junio de 2013 12:27
    • Propuesto como respuesta O. Melián viernes, 14 de junio de 2013 12:27
    viernes, 14 de junio de 2013 4:15
  • "Julieta's" preguntó:

    > necestio alinear varias label, con valores

    Hola, Julieta:

    Entiendo que lo que deseas alinear son los valores de los controles Label, no la posición que estos tengan dentro del formulario, los cuales los podrás alinear en tiempo de diseño, uno debajo de otro, o bien haciendo lo que te ha comentado Pedro Avila.

    Si es así, tienes que alinear el texto a la derecha y aplicarle al control una fuente (objeto Font) de ancho fijo, como bien puede ser la fuente Courier New. Por último, el símbolo monetario ($) no puede ir con el valor, porque entonces no se podrían alinear los valores como tu deseas; hay que darle una separación con respecto al valor decimal, separación que se consigue con la función PadLeft de la clase String.

    Para los cinco valores que has especificado, se puede hacer como te indico a continuación. Inicia un nuevo proyecto y añade un control Button en el formulario de inicio. Copia/pega el siguiente código en el formulario y pulsa F5:

    Imports System.Globalization
    
    Public Class Form1
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    
            Dim ci As New CultureInfo("en-US")
            Threading.Thread.CurrentThread.CurrentCulture = ci
    
            For index As Integer = 1 To 5
                Dim lbl As New Label()
                lbl.AutoSize = True
                lbl.ForeColor = Color.FromArgb(192, 0, 0)
                lbl.Font = New Font("Courier New", 18.0!, FontStyle.Bold)
                lbl.Location = New Point(50, index * 40)
                lbl.Name = String.Format("Label{0}", index)
                lbl.Size = New Size(200, 30)
                lbl.Text = lbl.Name
                lbl.TextAlign = ContentAlignment.MiddleRight
                lbl.Parent = Me
            Next
    
        End Sub
    
        Private Sub EstablecerValorLabel(labelName As String, valor As Decimal)
    
            ' Referenciamos el control Label por su nombre
            '
            Dim lbl As Label = DirectCast(Me.Controls.Find(labelName, True).FirstOrDefault(), Label)
    
            ' Símbolo de moneda correspondiente a la configuración regional
            ' del subproceso actual.
            '
            Dim currencySymbol As String = _
                Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencySymbol
    
            lbl.Text = currencySymbol & String.Format("{0:N2}", valor).PadLeft(10)
    
        End Sub
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    
            EstablecerValorLabel("Label1", 12.6D)
            EstablecerValorLabel("Label2", 5.4D)
            EstablecerValorLabel("Label3", 13.4D)
            EstablecerValorLabel("Label4", 143D)
            EstablecerValorLabel("Label5", 330D)
    
        End Sub
    
    End Class

    Tienes que hacer clic en el control Button para establecer los cinco valores, y el resultado es el que se muestra en la siguiente imagen:

    He tenido que establecer una configuración regional de inglés de Estados Unidos porque mi sistema operativo es el español. Si tu aplicación va a ejecutarse en sistemas operativos con una configuración de inglés de Estados Unidos, elimina todo lo referente al objeto CultureInfo.

    Fíjate bien en las propiedades que le asigno a los objetos Label que creo en tiempo de ejecución, en concreto en las propiedades Font TextAlign. Los valores de las restantes propiedades las dejo a tu elección. ;-)

    NOTA: Como al ir a publicar la respuesta me he dado cuenta que has marcado como satisfactoria tu última respuesta, vuélvela a marcar si mi respuesta no cumple con lo que esperabas. ¿OK?

    Un saludo


    Enrique Martínez
      [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, activa la instrucción Option Strict.


    viernes, 14 de junio de 2013 4:44
    Moderador
  • Si funciona muchas Gracias Enrique, eres genial :)
    lunes, 17 de junio de 2013 15:23