Principales respuestas
Cambiar tamaño textbox

Pregunta
-
Estoy probando esta rutina para cambiar el tamaño de fuente de unos textbox pero no me funciona, le paso de parámetro page o el nombre del panel o de un tabpage pero nada.
Private Sub ponFuente(ByVal xctrl As Control) Dim ctrl As Control For Each ctrl In xctrl.Controls If TypeOf ctrl Is TextBox Then Dim txt As TextBox = TryCast(ctrl, TextBox) txt.Font.Size = 4 Else ponFuente(ctrl) 'llamar Recursivamente End If Next End Sub
Respuestas
-
Por cierto he probado este ultimo método y no me pasa la llamada da error
Hola, ¿Qué error obtienes?
Quizá la definición de Shared te está trayendo problemas,
Private Function ObtenerControles(Of T As Control)(contenedor As Control) As List(Of T) Dim controles As New List(Of T)() For Each control As Control In contenedor.Controls If TypeOf control Is T Then controles.Add(DirectCast(control, T)) End If controles.AddRange(ObtenerControles(Of T)(control)) Next Return controles End Function Private Sub btnCambiarTamanio_Click(sender As Object, e As EventArgs) Handles btnCambiarTamanio.Click Dim controles As List(Of TextBox) = Me.ObtenerControles(Of TextBox)(Me) For Each control As TextBox In controles control.Font = New Font("Arial", 20) Next End Sub
Coméntanos como te fue,
- Marcado como respuesta Cid105 martes, 5 de julio de 2016 12:54
Todas las respuestas
-
Hola Cid105,
No entiendo que quieres hacer con lo de recursividad, ya que siempre hará lo mismo.
Con respecto a tu código, ya no deberías declarar el Control :
Private Sub ponFuente(ByVal xctrl As Control) For Each ctrl In xctrl.Controls If TypeOf ctrl Is TextBox Then Dim txt As TextBox = TryCast(ctrl, TextBox) txt.Font.Size = 4 End If Next End Sub
Y solo enviarías el control contenedor, en este caso Me hace alusión al WebForms.
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ponFuente(Me) End Sub
Saludos.
JC NaupaCrispín
Lima - Perú
La magia no existe, la programación SI -
Entiendo que el tema de recursividad va en la idea de recorrer la colección de controles de tipo TextBox incluso en los contenedores subyacentes y para conseguirlo hay muchas formas, una que me gusta mucho es a través de generics.
La idea es implementar un método que retorne una colección de controles de un tipo determinado sobre los cuales modificar el valor de cualquiera de sus propiedades, claro, la colección retorna todos los controles (de un tipo) incluso de los contenedores subyacentes:
Public Shared Function ObtenerControles(Of T As Control)(contenedor As Control) As List(Of T) Dim controles As New List(Of T)() For Each control As Control In contenedor.Controls If TypeOf control Is T Then controles.Add(DirectCast(control, T)) End If controles.AddRange(ObtenerControles(Of T)(control)) Next Return controles End Function
Nota que el método retorna una colección de controles de un tipo especificado, para nuestro caso de tipo TextBox, hacer uso del método es simple:
Me.ObtenerControles(Of TextBox)().ForEach(Function(c) InlineAssignHelper(c.Font, New Font("Arial", 20)))
- Propuesto como respuesta José De AlvaModerator lunes, 4 de julio de 2016 14:51
-
-
-
Por cierto he probado este ultimo método y no me pasa la llamada da error
Hola, ¿Qué error obtienes?
Quizá la definición de Shared te está trayendo problemas,
Private Function ObtenerControles(Of T As Control)(contenedor As Control) As List(Of T) Dim controles As New List(Of T)() For Each control As Control In contenedor.Controls If TypeOf control Is T Then controles.Add(DirectCast(control, T)) End If controles.AddRange(ObtenerControles(Of T)(control)) Next Return controles End Function Private Sub btnCambiarTamanio_Click(sender As Object, e As EventArgs) Handles btnCambiarTamanio.Click Dim controles As List(Of TextBox) = Me.ObtenerControles(Of TextBox)(Me) For Each control As TextBox In controles control.Font = New Font("Arial", 20) Next End Sub
Coméntanos como te fue,
- Marcado como respuesta Cid105 martes, 5 de julio de 2016 12:54
-
-
Private Sub TrackBar2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar2.ValueChanged
-
boxTextoOriginal.Font = New Font("Lucida Sans Unicode", TrackBar2.Value) '// Set Font Name and Size.
-
End Sub
RicoPollo
- Propuesto como respuesta viajeroh martes, 5 de julio de 2016 13:44
-
-