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

Aporte controles enabled / isabled

Estas en el tema de Aporte controles enabled / isabled en el foro de .NET en Foros del Web. El dia de ayer me encontre con un problema que consistia en muchas lineas de codigo declaradas para cada uno de mis controles en un ...
  #1 (permalink)  
Antiguo 26/07/2011, 11:44
Avatar de rikakashi  
Fecha de Ingreso: julio-2011
Mensajes: 226
Antigüedad: 12 años, 9 meses
Puntos: 33
Sonrisa Aporte controles enabled / isabled

El dia de ayer me encontre con un problema que consistia en muchas lineas de codigo declaradas para cada uno de mis controles en un windows form y buscando encontre un metodo para limpiar todos los textbox de un form sin embargo me vi en el problema de que solo me funcionaba en los controles en el form y no en los que se encontraban dentro de contenedores y hoy aprendi que cada contenedor tiene sus controles independientes y si alguien tiene una estructura similar en su form esto les ayudara sin duda alguna.

Código vb:
Ver original
  1. Dim c As Control
  2.         Dim g As Control
  3.         Dim p As Control
  4.  
  5.         For Each p In TabPage1.Controls
  6.             If TypeOf p Is Panel Then
  7.                 For Each g In p.Controls
  8.                     If TypeOf g Is GroupBox Then
  9.                         For Each c In g.Controls
  10.                             If TypeOf c Is TextBox Then
  11.                                 c.Enabled = True
  12.                             ElseIf TypeOf c Is ComboBox Then
  13.                                 c.Enabled = True
  14.                             ElseIf TypeOf c Is CheckBox Then
  15.                                 c.Enabled = True
  16.                             End If
  17.                         Next
  18.                     End If
  19.                 Next
  20.             End If
  21.         Next


como verán hago mi recorrido de controles por contenedor... yo los tengo en un tabcontrol así que comencé con mi tabpage1 después en los panel dentro de este y los groupbox dentro de este y los controles.
  #2 (permalink)  
Antiguo 26/07/2011, 11:48
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, 10 meses
Puntos: 267
Respuesta: Aporte controles enabled / isabled

Hola rikakashi, esto iría en las faqs. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #3 (permalink)  
Antiguo 26/07/2011, 11:51
Avatar de rikakashi  
Fecha de Ingreso: julio-2011
Mensajes: 226
Antigüedad: 12 años, 9 meses
Puntos: 33
Respuesta: Aporte controles enabled / isabled

Cita:
Iniciado por Aquaventus Ver Mensaje
Hola rikakashi, esto iría en las [URL="http://www.forosdelweb.com/f29/faq-s-del-foro-net-206048/"]faqs[/URL]. Saludos!.

me podrias explicar como hacerlo por favor!?
  #4 (permalink)  
Antiguo 26/07/2011, 11:53
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, 10 meses
Puntos: 267
Respuesta: Aporte controles enabled / isabled

que cada vez que quieras hacer un aporte dirigete a la seccion FAQ'S .NET y alli crea tu aporte en vez de hacerlo directamente al hilo de .Net
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #5 (permalink)  
Antiguo 26/07/2011, 12:01
Avatar de rikakashi  
Fecha de Ingreso: julio-2011
Mensajes: 226
Antigüedad: 12 años, 9 meses
Puntos: 33
Respuesta: Aporte controles enabled / isabled

Cita:
Iniciado por Aquaventus Ver Mensaje
que cada vez que quieras hacer un aporte dirigete a la seccion [URL="http://www.forosdelweb.com/f29/faq-s-del-foro-net-206048/"]FAQ'S .NET[/URL] y alli crea tu aporte en vez de hacerlo directamente al hilo de .Net

listo ya esta en los faq's

saludos!!
  #6 (permalink)  
Antiguo 26/07/2011, 12:03
Avatar de HaverRamirez  
Fecha de Ingreso: junio-2011
Ubicación: Guatemala
Mensajes: 273
Antigüedad: 12 años, 9 meses
Puntos: 33
Respuesta: Aporte controles enabled / isabled

Tu codigo se puede mejorar

Código vb:
Ver original
  1. ''La llamada
  2. For Each ctrl As Control In ObténControlesSecundarios(Me)
  3.             If Ctype(ctrl is TextBox) orElse ctype(ctrl is combobox) etc... Then
  4.                 ctrl.text = nothing
  5.             End If
  6. Next
  7.        
  8. ''El procedimiento
  9. Private Function ObtenControlesSecundarios(ByVal parent As Control) As ArrayList
  10.         Dim resultado As New ArrayList()
  11.         For Each ctrl As Control In parent.Controls
  12.             ' Agregue este control al resultado.
  13.            resultado.Add(ctrl)
  14.             ' Llama recursivamente a este método para agregar también todos los controles secundarios.
  15.            resultado.AddRange(ObténControlesSecundarios(ctrl))
  16.         Next
  17.         Return resultado
  18. End Function

o en lambda

Código vb:
Ver original
  1. si no estoy mal tambien en lambda
  2.  
  3.  
  4. For Each ctrl As Control In ObténControlesSecundarios(
  5.                                         Function ObtenControlesSecundarios(ByVal parent As Control) As ArrayList
  6.                                         Dim resultado As New ArrayList()
  7.                                         For Each ctrl As Control In parent.Controls
  8.                                                 ' Agregue este control al resultado.
  9.                                                 resultado.Add(ctrl)
  10.                                                 ' Llama recursivamente a este método para agregar también todos los controles secundarios.
  11.                                                 resultado.AddRange(ObténControlesSecundarios(ctrl))
  12.                                             Next
  13.                                             Return resultado
  14.                                         End Function)
  15.  
  16.  
  17.             If Ctype(ctrl is TextBox) orElse ctype(ctrl is combobox) etc... Then
  18.                 ctrl.text = nothing
  19.             End If
  20. Next
  #7 (permalink)  
Antiguo 26/07/2011, 13:00
Avatar de rikakashi  
Fecha de Ingreso: julio-2011
Mensajes: 226
Antigüedad: 12 años, 9 meses
Puntos: 33
Respuesta: Aporte controles enabled / isabled

Cita:
Iniciado por HaverRamirez Ver Mensaje
Tu codigo se puede mejorar

Código vb:
Ver original
  1. ''La llamada
  2. For Each ctrl As Control In ObténControlesSecundarios(Me)
  3.             If Ctype(ctrl is TextBox) orElse ctype(ctrl is combobox) etc... Then
  4.                 ctrl.text = nothing
  5.             End If
  6. Next
  7.        
  8. ''El procedimiento
  9. Private Function ObtenControlesSecundarios(ByVal parent As Control) As ArrayList
  10.         Dim resultado As New ArrayList()
  11.         For Each ctrl As Control In parent.Controls
  12.             ' Agregue este control al resultado.
  13.            resultado.Add(ctrl)
  14.             ' Llama recursivamente a este método para agregar también todos los controles secundarios.
  15.            resultado.AddRange(ObténControlesSecundarios(ctrl))
  16.         Next
  17.         Return resultado
  18. End Function

o en lambda

Código vb:
Ver original
  1. si no estoy mal tambien en lambda
  2.  
  3.  
  4. For Each ctrl As Control In ObténControlesSecundarios(
  5.                                         Function ObtenControlesSecundarios(ByVal parent As Control) As ArrayList
  6.                                         Dim resultado As New ArrayList()
  7.                                         For Each ctrl As Control In parent.Controls
  8.                                                 ' Agregue este control al resultado.
  9.                                                 resultado.Add(ctrl)
  10.                                                 ' Llama recursivamente a este método para agregar también todos los controles secundarios.
  11.                                                 resultado.AddRange(ObténControlesSecundarios(ctrl))
  12.                                             Next
  13.                                             Return resultado
  14.                                         End Function)
  15.  
  16.  
  17.             If Ctype(ctrl is TextBox) orElse ctype(ctrl is combobox) etc... Then
  18.                 ctrl.text = nothing
  19.             End If
  20. Next
no me funcionan!
  #8 (permalink)  
Antiguo 26/07/2011, 13:12
Avatar de HaverRamirez  
Fecha de Ingreso: junio-2011
Ubicación: Guatemala
Mensajes: 273
Antigüedad: 12 años, 9 meses
Puntos: 33
Respuesta: Aporte controles enabled / isabled

ok, ok , cuando llamas al primer formulario le mandas el form

ObténControlesSecundarios(Form1)
  #9 (permalink)  
Antiguo 26/07/2011, 13:12
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, 10 meses
Puntos: 267
Respuesta: Aporte controles enabled / isabled

Señores las faqs no son temas para discusion, si van a colocar su aporte haganlo verificando que sea correcto lo que ponen. pero no lo toquen para hacer comentarios. Gracias.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #10 (permalink)  
Antiguo 26/07/2011, 14:23
Avatar de HaverRamirez  
Fecha de Ingreso: junio-2011
Ubicación: Guatemala
Mensajes: 273
Antigüedad: 12 años, 9 meses
Puntos: 33
Respuesta: Aporte controles enabled / isabled

MMMMM, esta bien, pero existe algo, que tal si el codigo se puede mejorar, entonces, es un buen recurzo, aparte de, puede que sirva de ejemplo para extender codigos posteriores, entonces se cumple el cometido del FAQ?, porque este no es un FAQ, es un post, y en el FAQ, coloque el codigo optimizado y su segunda version que incluye lamba, entonces, donde se infrige una regla? a y para Rikakashi el segundo que puse de ejemplo como lamba tiene que ser en Visual Studio 2008 o posterior
  #11 (permalink)  
Antiguo 26/07/2011, 14:27
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, 10 meses
Puntos: 267
Respuesta: Aporte controles enabled / isabled

Hola HaverRamirez, andas bien, pero te diste el lujo de leer el 1er mensaje del moderador en las FAQ'S? Colocar Tema,Pregunta,Respuesta, para que lo que pongas tenga validez y no sea solo un codigo puesto sin algun argumento y tratar de especificar todo asi como lo que mencionas ahora. Tratemos de dar orden al foro
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #12 (permalink)  
Antiguo 26/07/2011, 14:36
Avatar de HaverRamirez  
Fecha de Ingreso: junio-2011
Ubicación: Guatemala
Mensajes: 273
Antigüedad: 12 años, 9 meses
Puntos: 33
Respuesta: Aporte controles enabled / isabled

Listo, ya lo coloque, se me olvido marcar el metodo como extension en el FAQ...y me parecio que, por ser de las misma naturaleza del anterior era valida, ahora la de lamba esa si no, pero igual ya lo coloque...
  #13 (permalink)  
Antiguo 26/07/2011, 14:38
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, 10 meses
Puntos: 267
Respuesta: Aporte controles enabled / isabled

Excelente compañero HaverRamirez! Te doy karma por tus aportes aqui en el foro y tu ayuda constante!. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #14 (permalink)  
Antiguo 26/07/2011, 14:54
Avatar de rikakashi  
Fecha de Ingreso: julio-2011
Mensajes: 226
Antigüedad: 12 años, 9 meses
Puntos: 33
Sonrisa Respuesta: Aporte controles enabled / isabled

solo para confirmar el código para mejorar el mio me lleva al mismo problema que con el mio al principio... solo contenedores independientes... bueno así es como me lo arroja así que me quede con el mio. saludos!!!
  #15 (permalink)  
Antiguo 26/07/2011, 14:58
Avatar de HaverRamirez  
Fecha de Ingreso: junio-2011
Ubicación: Guatemala
Mensajes: 273
Antigüedad: 12 años, 9 meses
Puntos: 33
Respuesta: Aporte controles enabled / isabled

esta linea es la que asegura que se vuelva a ejecutar la recursion con el control siguiente

resultado.AddRange(ObténControlesSecundarios(ctrl) )
y si funciona porque yo la uso en un formulario padre que hereda estas propiedades a los hijos...
y para muestra un boton, te dejo el codigo de ejemplo que viene con el libro de Programación Avanzada Visual Basic de Francisco Ballena

http://www.mediafire.com/?9ugxg2283yyts4g

Etiquetas: controles, enabled
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 06:35.