Foros del Web » Programación para mayores de 30 ;) » .NET »

vb.net como limitar label multilinea por caracteres

Estas en el tema de vb.net como limitar label multilinea por caracteres en el foro de .NET en Foros del Web. vb2008 Como puedo limitar la cantidad del contenido de un label en multilineas. Por ejemplo El siguiente texto: La colección de esta no es tan ...
  #1 (permalink)  
Antiguo 19/07/2011, 18:39
 
Fecha de Ingreso: marzo-2010
Mensajes: 432
Antigüedad: 14 años
Puntos: 11
vb.net como limitar label multilinea por caracteres

vb2008

Como puedo limitar la cantidad del contenido de un label en multilineas.

Por ejemplo

El siguiente texto:

La colección de esta no es tan grande como las anteriores pero también tiene variedad

---------------------

Como lo puedo corta para que quede de esta forma:

La colección de esta no es tan grande
como las anteriores pero también tiene
variedad

---------------------

El problema que el texto es dinamico ya que lo extraigo de una bd, puede ser mas largo o mas corto.

Estaba probando con esto, pero solo funciona con texto estatico

Código vb:
Ver original
  1. label1.Text = "La colección de esta no es tan grande " & vbCrLf  & "como las anteriores pero también tiene " & vbCrLf  & "variedad"


eso porfavor.
__________________
Libro de HTML 5 + codigo fuente bajar aqui.
  #2 (permalink)  
Antiguo 20/07/2011, 08:04
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 9 meses
Puntos: 267
Respuesta: vb.net como limitar label multilinea por caracteres

pero podrias primero almacenar la cadena que extraigas de tu consulta a un string y saber la longitud que posee esa cadena(.Length()), y lo recorres char por char sabiendo la longitud , hasta que tu escojas un limite en la primera linea por ejemplo de 25 caracteres y una vez que cuando recorres tu cadena y llegas a la letra 25 le colocas el "& vbCrLf &" y le adjuntas las siguientes letras que vienen de tu recorrido y actualizas un contador inicializandolo a 0 y hasta que llegue otra vez a 25 le das "& vbCrLf &" y así... Espero haber sido claro
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #3 (permalink)  
Antiguo 20/07/2011, 08:28
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 9 meses
Puntos: 267
Respuesta: vb.net como limitar label multilinea por caracteres

Haber te simplifico la vida un poco... :
En este ejemplo asume que la variable cadena es el resultado que obtienes de tu consulta de tu bd :
Código vb:
Ver original
  1. 'Se asume que se recibe una cadena de tu consulta
  2.    Dim cadena As String = "Hola que tal como estas? Veo que no andas bien con los recorridos de cadenas.... Pero bueno aqui en Forosdelweb estamos para ayudarte :).Cualquier duda nos la preguntas!"
  3.     'Creamos un contador
  4.    Dim contador As Integer = 0
  5.     'Creamos una variable que define la cantidad de caracteres por linea
  6.    Dim longitud_maxima As Integer = 25
  7.     'La nueva cadena a imprimir en el textbox multiline
  8.    Dim nueva_cadena As String = String.Empty
  9.  
  10.     Private Sub Form7_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  11.         'Recorremos toda la cadena
  12.        For Each x As Char In cadena.ToCharArray
  13.             'Incrementamos el contador
  14.            contador += 1
  15.             'si el contador es igual a la longitus maxima asignada
  16.            If contador = longitud_maxima Then
  17.                 'Adjunto el caracter y le doy un salto de linea
  18.                nueva_cadena = nueva_cadena & x & vbCrLf
  19.                 'Inicializo el contador a 0
  20.                contador = 0
  21.                 'Sino...
  22.            Else
  23.                 'Sigo adjuntando los caracteres a la nueva cadena
  24.                nueva_cadena = nueva_cadena & x
  25.             End If
  26.         Next
  27.         'Una vez finalizado el recorrido adjunto la nueva
  28.        'cadena al textbox multiline
  29.        TextBox1.Text = nueva_cadena
  30.     End Sub
Estudialo!!!!!!!!!!!!!. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #4 (permalink)  
Antiguo 20/07/2011, 08:40
Avatar de HaverRamirez  
Fecha de Ingreso: junio-2011
Ubicación: Guatemala
Mensajes: 273
Antigüedad: 12 años, 9 meses
Puntos: 33
Respuesta: vb.net como limitar label multilinea por caracteres

Un comentario, el codigo anterior, cuenta letras, pero solo las letras entonces el texto te querdaria cortado

Este te
xto deb
eria ir c
ortado
por pal
abra

para ello mira esto...

Código vb:
Ver original
  1. Public Function WrapText(ByVal Text As String, ByVal
  2. LineLength As Integer) As List(Of String)
  3.  
  4. Dim ReturnValue As New List(Of String)
  5. ' Remove leading and trailing spaces
  6. Text = Trim(Text)
  7.  
  8.  
  9. Dim Words As String() = Text.Split(" ")
  10.  
  11. If Words.Length = 1 And Words(0).Length > LineLength
  12. Then
  13. ' Text is just one big word that is longer than one line
  14. ' Split it mercilessly
  15. Dim lines As Integer = (Int(Text.Length / LineLength)
  16. + 1)
  17. Text = Text.PadRight(lines * LineLength)
  18. For i = 0 To lines - 1
  19. Dim SliceStart As Integer = i * LineLength
  20. ReturnValue.Add(Text.Substring(SliceStart,
  21. LineLength))
  22. Next
  23. Else
  24. Dim CurrentLine As New System.Text.StringBuilder
  25. For Each Word As String In Words
  26. ' will this word fit on the current line?
  27. If CurrentLine.Length + Word.Length <
  28. LineLength Then
  29. CurrentLine.Append(Word & " ")
  30. Else
  31. ' is the word too long for one line
  32. If Word.Length > LineLength Then
  33. ' hack off the first piece, fill out the
  34. current line and start a new line
  35. Dim Slice As String =
  36. Word.Substring(0, LineLength - CurrentLine.Length)
  37. CurrentLine.Append(Slice)
  38. ReturnValue.Add(CurrentLine.ToString)
  39. CurrentLine = New
  40. System.Text.StringBuilder
  41.  
  42. ' Remove the first slice from the word
  43. Word = Word.Substring(Slice.Length,
  44. Word.Length - Slice.Length)
  45.  
  46. ' How many more lines do we need for
  47. this word?
  48. Dim RemainingSlices As Integer =
  49. Int(Word.Length / LineLength) + 1
  50. For LineNumber = 1 To
  51. RemainingSlices
  52. If LineNumber = RemainingSlices
  53. Then
  54. 'this is the last slice
  55. CurrentLine.Append(Word & "
  56. ")
  57. Else
  58. ' this is not the last slice
  59. ' hack off a slice that is one
  60. line long, add that slice
  61. ' to the output as a line and
  62. start a new line
  63. Slice = Word.Substring(0,
  64. LineLength)
  65. CurrentLine.Append(Slice)
  66.  
  67. ReturnValue.Add(CurrentLine.ToString)
  68. CurrentLine = New
  69. System.Text.StringBuilder
  70.  
  71. ' Remove the slice from the
  72. word
  73. Word =
  74. Word.Substring(Slice.Length, Word.Length - Slice.Length)
  75. End If
  76. Next
  77. Else
  78. ' finish the current line and start a new
  79. one with the wrapped word
  80. ReturnValue.Add(CurrentLine.ToString)
  81. CurrentLine = New
  82. System.Text.StringBuilder(Word & " ")
  83. End If
  84. End If
  85. Next
  86.  
  87. ' Write the last line to the output
  88. If CurrentLine.Length > 0 Then
  89. ReturnValue.Add(CurrentLine.ToString)
  90. End If
  91. End If
  92. Return ReturnValue
  93. End Function
  #5 (permalink)  
Antiguo 20/07/2011, 08:44
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 9 meses
Puntos: 267
Respuesta: vb.net como limitar label multilinea por caracteres

ah claro de hecho HaverRamirez, pero no dije que "fuera la solucion", si quiere hacerlo por palabras no le voy a dar de comer, tiene que aprender a pescar para que coma para ello ya que busque.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #6 (permalink)  
Antiguo 20/07/2011, 08:47
Avatar de HaverRamirez  
Fecha de Ingreso: junio-2011
Ubicación: Guatemala
Mensajes: 273
Antigüedad: 12 años, 9 meses
Puntos: 33
Respuesta: vb.net como limitar label multilinea por caracteres

Generalmente yo soy de la misma opinion, yo soy del que das respuestas cortas, pero hoy toy generoso, ña jajaja,
  #7 (permalink)  
Antiguo 20/07/2011, 08:50
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 9 meses
Puntos: 267
Respuesta: vb.net como limitar label multilinea por caracteres

jajaja, todos tenemos nuestros momentos de generosidad , pero a veces abusan de ello y es ahi donde se le corta respondiendole solo con palabras para que lo interprete y averigue para que pueda desarrollarlo .
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #8 (permalink)  
Antiguo 20/07/2011, 08:52
Avatar de HaverRamirez  
Fecha de Ingreso: junio-2011
Ubicación: Guatemala
Mensajes: 273
Antigüedad: 12 años, 9 meses
Puntos: 33
Respuesta: vb.net como limitar label multilinea por caracteres

Perate, Perate, nos estamos haciendo pedazos por algo simple, el textbox tiene un a propiedad que se llama WordWarp, ponla en true, changos...incluso creo que hay un objeto en si que hace esto, si no estoy mal es el richtextbox... y ponle la propieda de autosize en true....a caray...
  #9 (permalink)  
Antiguo 20/07/2011, 08:55
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 9 meses
Puntos: 267
Respuesta: vb.net como limitar label multilinea por caracteres

Exacto pero él lo hace en un Label... motivo por el cual él ya debe tener idea de como desarrollarlo ya que tiene codigo incrustado en nuestras respuestas
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #10 (permalink)  
Antiguo 20/07/2011, 08:56
Avatar de HaverRamirez  
Fecha de Ingreso: junio-2011
Ubicación: Guatemala
Mensajes: 273
Antigüedad: 12 años, 9 meses
Puntos: 33
Respuesta: vb.net como limitar label multilinea por caracteres

Si, cierto, fue un lapsus brutus...
  #11 (permalink)  
Antiguo 16/07/2012, 05:10
 
Fecha de Ingreso: julio-2012
Mensajes: 1
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: vb.net como limitar label multilinea por caracteres

Si el texto es dinámico podrías cambiar las propiedades del label.

lbl_nombreLabel.Width = 800
lbl_nombreLabel.Height = 80
lbl_nombreLabel.AutoSize = False

El único problema que puedes tener es que se quede corta la altura (De este parametro depende el número de filas). Pero es fácil de solucionar porque si por cada columna hay por ejemplo 30 caracteres (depende de la propiedad Width y el tamaño de la letra), Pues divides el numero total de caracteres en 30 y así se optiene el numero de lineas que necesitas. En funcion de este valor especificas la propiedad Height

Etiquetas: bd, caracteres, label, limitar, vb
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:53.