Recorrer controles de un formulario

01/02/2005 - 21:23 por BPerez | Informe spam
Hola a todos, quisiera recorrer los controles de un formulario y según su
tipo hacer una cosa con ellos u otra.
En este caso a los TextBox hacerlos de sólo lectura.
Cuando intento hacer algo como

Sub cambia_modo(ByVal estado As Char, ByVal formulario As Control)

Dim ctl As Control
For Each ctl In formulario.Controls
If TypeOf ctl Is System.Windows.Forms.TextBox Then

ctl.readonly = True
End If

Pero me dice que readonly no es un miembro de ctl.
¿Que hago mal?
Gracia sa todos por vuestra ayuda

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
01/02/2005 - 21:29 | Informe spam
ReadOnly no es un metodo de la clase Control sino de TextBox (mas
exactamente TextBoxBase). Para poder acceder a ella necesitas una referencia
a esa clase por lo que deberas usar un CType o DirectCast para obtenerla:

If TypeOf ctl Is System.Windows.Forms.TextBox Then
CType(ctl, System.Windows.Forms.TextBox).Readonly = True
End If

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo

Existen dos maneras de ser feliz en esta vida;
una es hacerse el idiota y la otra serlo.
Sigmund Freud
Respuesta Responder a este mensaje
#2 BPerez
02/02/2005 - 20:53 | Informe spam
Gracias por tu ayuda Eduardo, pero sigue dando problemas.
Entiendo tu explicación pero la solución que propones tampoco funciona.
He probado con
CType(ctl, System.Windows.Forms.TextBox).Readonly = True
y me sigue diciendo que ReadOnly no es un miembro de la clase
e incluso he probado a
dim cmb as system.windows.forms.combobox
cmb = CType(ctl, System.Windows.Forms.TextBox)
cmb.ReadOnly = true

pero me sigue diciendo que nanai.

¿Que hago mal?.


"Eduardo A. Morcillo [MS MVP VB]" wrote:

ReadOnly no es un metodo de la clase Control sino de TextBox (mas
exactamente TextBoxBase). Para poder acceder a ella necesitas una referencia
a esa clase por lo que deberas usar un CType o DirectCast para obtenerla:

If TypeOf ctl Is System.Windows.Forms.TextBox Then
CType(ctl, System.Windows.Forms.TextBox).Readonly = True
End If

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo

Existen dos maneras de ser feliz en esta vida;
una es hacerse el idiota y la otra serlo.
Sigmund Freud



Respuesta Responder a este mensaje
#3 BPerez
02/02/2005 - 21:17 | Informe spam
PERDON
Estoy en la pola y me lie con el Combobox. Retiro todo lo dicho, tienes toda
la razón, estabas en lo cierto.

Gracias y perdona...

"BPerez" wrote:

Hola a todos, quisiera recorrer los controles de un formulario y según su
tipo hacer una cosa con ellos u otra.
En este caso a los TextBox hacerlos de sólo lectura.
Cuando intento hacer algo como

Sub cambia_modo(ByVal estado As Char, ByVal formulario As Control)

Dim ctl As Control
For Each ctl In formulario.Controls
If TypeOf ctl Is System.Windows.Forms.TextBox Then

ctl.readonly = True
End If

Pero me dice que readonly no es un miembro de ctl.
¿Que hago mal?
Gracia sa todos por vuestra ayuda
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida