problemas con controles

22/07/2004 - 01:56 por José Mª Toro Bermejo | Informe spam
Tengo una aplicacion en la que quiero poner a enable =false todos los
botones. El codigo que utilizo es :

Dim ctr As Control
Dim btn As Button
For Each ctr In Controls
If TypeOf ctr Is Button Then
btn = CType(ctr, Button)
MessageBox.Show(btn.Text)
End If
Next

el problema es que los botones no se ponen enable=false, ¿alquien sabe que
hago mal?¿Hay otra solucion para hacer lo que quiero conseguir en mi
aplicacion?

GRACIAS DE ANTEMANO

Preguntas similare

Leer las respuestas

#6 Tristan
22/07/2004 - 11:22 | Informe spam
Vaya!, no me había dado cuenta de tu mensaje. Hemos
respondido lo mismo, casi con exactitud :-)
Respuesta Responder a este mensaje
#7 AJParilli
22/07/2004 - 15:48 | Informe spam
Esto deberia funcionar:

Private Sub SetControl(ByVal Parent As Object)

Dim objMyParent As Object
Dim Control1 As Control

objMyParent = Parent 'Find the parent of the
control

For Each Control1 In objMyParent.Controls ' Then,
for each control in the controls collection of the parent

If TypeOf Control1 Is Button Then
Control1.Enabled = False
Else

'Recursive call to reach the controls
contained in panels, groupboxes, etc

SetControl(Control1)

End If

Next

End Sub


The main call -> SetControl(form)


Tengo una aplicacion en la que quiero poner a enable


=false todos los
botones. El codigo que utilizo es :

Dim ctr As Control
Dim btn As Button
For Each ctr In Controls
If TypeOf ctr Is Button Then
btn = CType(ctr, Button)
MessageBox.Show(btn.Text)
End If
Next

el problema es que los botones no se ponen enable=false,


¿alquien sabe que
hago mal?¿Hay otra solucion para hacer lo que quiero


conseguir en mi
aplicacion?

GRACIAS DE ANTEMANO


.

Respuesta Responder a este mensaje
#8 Carlos Solivan
22/07/2004 - 16:05 | Informe spam
Gracias tu codigo seve mas decente .Hay que ver para que
lo quiere jose.




Supongo que en tu ejemplo, falta el enabled = false :-)

Descartado eso. Ten en cuenta que en winforms, los
controles funcionan de forma recursiva. Cada control
puede contener controles. Si por ejemplo tienes un botón
dentro de un Panel, o un TabControl, no se accederá a
ellos con ese bucle.

Este código funcionaría sobre los controles situados
directamente en el formulario:

Dim ctrl As Control
For Each ctrl In Me.Controls
If TypeOf ctrl Is Button Then
ctrl.Enabled = False
End If
Next

Para hacer lo mismo con un control contenedor, sustituye
el Me de Me.Controls por el nombre del contenedor.

Si quieres un código que realmente recorra todos los
controles de un formulario, sería así:

ActivaBotones(Me)

Sub ActivaBotones(ByVal parent As Control)
Dim ctrl As Control
For Each ctrl In parent.Controls
If ctrl.Controls.Count > 0 Then
ActivaBotones(ctrl)
End If
If TypeOf ctrl Is Button Then
ctrl.Enabled = False
End If
Next
End Sub
.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida