Principales respuestas
Replanteo una pregunta. Ahora tengo un avance, ya sé qué es lo que no funciona, lo que no logro es solucionarlo. A ver si alguien me puede dar una luz.

Pregunta
-
LO QUE DESEO:
Deseo obtener el texto exacto que un control Label muestra.
Cuando la cadena es más corta que el ancho del Label, la propiedad Text devuelve justo lo que se ve, pero cuando la cadena sobrepasa el ancho del Label devuelve toda la cadena y no solo la parte visible que es lo que deseo.
LO QUE PUDE COMPROBAR:
El código adjunto funciona bien cuando comento la línea que dice:
'Label1.Font = New Font(FontFamily.GenericSansSerif, 10, GraphicsUnit.Point)
Es decir, cuando dejo la fuente y el tamaño por defecto (8.25) sí funciona bien, por lo que me parece que es cuestión de sincronizar unidades de medida.
Para probar el código solo hay que añadir un control Label y un control Button a un proyecto en blanco. Adjunto también la salida. Obsérvese que para una fuente de tamaño 10 el texto del círculo rojo no debería verse.
Public Class Form1 Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click Dim nPosicion As Integer Dim nLineas As Integer Dim Formato As StringFormat = StringFormat.GenericTypographic Dim Grafico As Graphics = Label1.CreateGraphics() Label1.BackColor = Color.Yellow Label1.AutoSize = False Label1.Size = New Size(200, 24) Label1.Font = New Font(FontFamily.GenericSansSerif, 10, GraphicsUnit.Point) Label1.Text = "En la linea de abajo se debe ver lo mismo que en el Label." Grafico.MeasureString(Label1.Text, Label1.Font, Label1.ClientSize, Formato, nPosicion, nLineas) Grafico.Dispose() Dim textoVisible = Label1.Text.Substring(0, nPosicion) MessageBox.Show("Original ==> " & Label1.Text & Chr(13) & "Visible ==> " & "|" & textoVisible & "|") End Sub End Class
Respuestas
-
Finalmente lo he conseguido y ya que nadie me dio una respuesta satisfactoria pongo aquí cómo lo conseguí.
A quien le sirva, poniendo la propiedad del control Label, FlatStyle al valor de System, devuelve el texto exacto para cualquier tamaño.
- Editado James2016-2 martes, 18 de agosto de 2020 21:36
- Marcado como respuesta Óscar NavarroModerator martes, 18 de agosto de 2020 23:01
-
De acuerdo, muchas gracias por compartir la respuesta acerca de tu consulta! Si tienes alguna otra duda, usa los foros de MSDN, es un placer atender tus consultas.
Saludos!
- Marcado como respuesta Óscar NavarroModerator lunes, 24 de agosto de 2020 16:47
Todas las respuestas
-
-
Finalmente lo he conseguido y ya que nadie me dio una respuesta satisfactoria pongo aquí cómo lo conseguí.
A quien le sirva, poniendo la propiedad del control Label, FlatStyle al valor de System, devuelve el texto exacto para cualquier tamaño.
- Editado James2016-2 martes, 18 de agosto de 2020 21:36
- Marcado como respuesta Óscar NavarroModerator martes, 18 de agosto de 2020 23:01
-
-
De acuerdo, muchas gracias por compartir la respuesta acerca de tu consulta! Si tienes alguna otra duda, usa los foros de MSDN, es un placer atender tus consultas.
Saludos!
- Marcado como respuesta Óscar NavarroModerator lunes, 24 de agosto de 2020 16:47