Visual Basic - Recorrer PowerPack Shapes VB2008

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

Recorrer PowerPack Shapes VB2008

Publicado por Guillermo (2 intervenciones) el 25/05/2014 19:02:18
Buenas

Quisiera saber cómo podría recorrer todos los elementos powerpacks que tengo introducido en un formulario de visual basic 2008. Me explico con un ejemplo: Si quiero recorrer todos los controles (labels, textbox...) de mi formulario lo hago de esta manera

1
For Each c As Control In ObjForm.Controls

Pero esto no me recorre por ejemplo los rectangulos que tenga insertados.

Alguien podría decirme qué codigo es el que necesito para conseguirlo??

Muchas gracias!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Recorrer PowerPack Shapes VB2008

Publicado por Pico (114 intervenciones) el 25/05/2014 20:02:14
Line and Shape controls are windowless controls; they have no window handles and therefore use less system resources.

Ese es el problema. For Each c As Control lo que busca son controles con ventana. Cuando un control no tiene ventana no es tan fácil de encontrar.

Prueba buscando el shape expresamente, algo como For Each shape As Shape
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Recorrer PowerPack Shapes VB2008

Publicado por Guillermo (2 intervenciones) el 25/05/2014 21:02:58
Vayap.

Pues con el shape no me funciona, pero seguiré bichenado posibilidades ya que se que no tiene un window handle.

Muchas gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Recorrer PowerPack Shapes VB2008

Publicado por Diego (34 intervenciones) el 26/05/2014 16:26:26
Lo que tienes que hacer es una funcion recursiva . Hacer el For Each como tienes y realizas las operaciones correspondientes mediante if ... o Case , o como kieras ...y en caso de no ser un objeto que se quiere controlar llamas a la funcion orta vez. Te adjunto un ejemplo en el que recorro toda la pantall e imprimo el nombre y el valor de los textbox

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
RecorrerControlesPantalla(Me)
End Sub

Sub RecorrerControlesPantalla(ByVal ControlPantalla As Control)

For Each Control As Object In ControlPantalla.Controls

Select Case Control.GetType.ToString

' si es un texbox
Case "System.Windows.Forms.TextBox"
Dim TextBox As System.Windows.Forms.TextBox = Control

MsgBox(TextBox.Name.ToString & " --> " & TextBox.Text.ToString)

' si es un combo box
Case "System.Windows.Forms.ComboBox"
Dim ComboBox As System.Windows.Forms.ComboBox = Control


End Select

RecorrerControlesPantalla(Control)

Next

End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar