ControlsCount

15/03/2005 - 01:37 por Irak Rubio | Informe spam
Hola otra vez, Tambien tengo el siguiente problema:
Resulta que quierohacer un ciclo en un formulario para que me devuelva todos
los controles que tiene, pero unicamente me devuelve los controles que NO se
encuentran contenidos en algun otro control contenedor (panel, frame, etc.),
entonces tengo que hacer un montonal de talacha para poder obtener todos los
controles. Mi pregunta es si existe alguna forma de enumerar los controles
independientemente de los controles que los contengan?, pero que sean de un
formulario "x" ya que usando reflexion me tope con un titipuchal de clases
que ni al caso.

Lo que yo hago es esto:
Dim Obj as Object
for each Obj in myForm
? obj.Name
next
pero no me trae todos los controles... ¿Como le hago?
Gracias :-)

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
15/03/2005 - 04:27 | Informe spam
Cada control tiene su coleccion de controles hijos. Debes enumerar en forma
recursiva esas colecciones para obtener todos los controles del formulario:

Private Sub EnumerarControles(ByVal controlPadre As Control)

With controlPadre.Controls

For i As Integer = 0 To .Count - 1

Console.WriteLine(.Item(i).Name)

EnumerarControles(.Item(i))

Next

End With

End Sub

Y comienzas la enumeracion por el formulario:

EnumerarControles(Me) ' Enumero todos los controles de este formulario

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
https://mvp.support.microsoft.com/p...4EF5A4191C

Todos somos muy ignorantes. Lo que ocurre es que no todos
ignoramos las mismas cosas.
Albert Einstein
Respuesta Responder a este mensaje
#2 Irak Rubio
15/03/2005 - 23:53 | Informe spam
Gracias, me has dado una gran idea, puedo pasar esa funcion a mi formulario,
sin embargo, ¿Es posible que pueda identificar que controles son contenedores
y cuales no, algo asi como por ejemplo:

dim ctrl as object
for each ctrl in me.controls

if ctrl.(esPadre) then
call enumerarcontroles(ctrl)
else
? ctrl.Name

next

Gracias por tu atencion.(Has salvado un empleo) :-)

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

Cada control tiene su coleccion de controles hijos. Debes enumerar en forma
recursiva esas colecciones para obtener todos los controles del formulario:

Private Sub EnumerarControles(ByVal controlPadre As Control)

With controlPadre.Controls

For i As Integer = 0 To .Count - 1

Console.WriteLine(.Item(i).Name)

EnumerarControles(.Item(i))

Next

End With

End Sub

Y comienzas la enumeracion por el formulario:

EnumerarControles(Me) ' Enumero todos los controles de este formulario

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
https://mvp.support.microsoft.com/p...4EF5A4191C

Todos somos muy ignorantes. Lo que ocurre es que no todos
ignoramos las mismas cosas.
Albert Einstein



Respuesta Responder a este mensaje
#3 Jocayol
16/03/2005 - 01:13 | Informe spam
if ctrl.controls.count >0 'Este control tiene a su vez otros controles, es
contenedor.
Espero que te sirva

"Irak Rubio" escribió en el mensaje
news:
Gracias, me has dado una gran idea, puedo pasar esa funcion a mi
formulario,
sin embargo, ¿Es posible que pueda identificar que controles son
contenedores
y cuales no, algo asi como por ejemplo:

dim ctrl as object
for each ctrl in me.controls

if ctrl.(esPadre) then
call enumerarcontroles(ctrl)
else
? ctrl.Name

next

Gracias por tu atencion.(Has salvado un empleo) :-)

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

Cada control tiene su coleccion de controles hijos. Debes enumerar en
forma
recursiva esas colecciones para obtener todos los controles del
formulario:

Private Sub EnumerarControles(ByVal controlPadre As Control)

With controlPadre.Controls

For i As Integer = 0 To .Count - 1

Console.WriteLine(.Item(i).Name)

EnumerarControles(.Item(i))

Next

End With

End Sub

Y comienzas la enumeracion por el formulario:

EnumerarControles(Me) ' Enumero todos los controles de este formulario

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
https://mvp.support.microsoft.com/p...4EF5A4191C

Todos somos muy ignorantes. Lo que ocurre es que no todos
ignoramos las mismas cosas.
Albert Einstein



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