Visual Basic.NET - Limpiar los controles cuando existe un TabControl

 
Vista:

Limpiar los controles cuando existe un TabControl

Publicado por jc (3 intervenciones) el 13/06/2006 04:33:26
Se trata de limpiar todos los controles de un formulario, distribuidos en tres fichas de un TabControl.
He implementado el siguiente procedimiento que por alguna razón, no entrega el resultado esperado...

Public Sub LimpiarControles()
Dim ctlControl As Object
'Ciclo que supuestamente recorre toda la coleccion de controles del form
For Each ctlControl In Me.Controls
If ctlControl.GetType Is GetType(System.Windows.Forms.TextBox) Then
ctlControl.Text = ""
End If

If ctlControl.GetType Is GetType(System.Windows.Forms.ComboBox) Then
ctlControl.Text = ""
End If

If ctlControl.GetType Is GetType(System.Windows.Forms.ListBox) Then
ctlControl.Items.clear()
End If

If ctlControl.GetType Is GetType(System.Windows.Forms.ListView) Then
ctlControl.Items.clear()
End If

Application.DoEvents()

Next ctlControl
End Sub

Probé recorriendo la colección Tabcontrol1.Controls en el ciclo de mas arriba pero no funcionó.
Un dato importante es que en una de las fichas del tabControl en questión, existe un contenedor GroupBox. Cuando recorro la coleccón GroupBox1.Controls el proceso si funciona. Pero no es lo que necesito, pues se trata de limpiar los controles de TODO el formulario.

Alguna idea para implementar esto...cualquier ayuda será bienvenida.

Juan Carlos
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

RE:Limpiar los controles cuando existe un TabContr

Publicado por thessen (298 intervenciones) el 16/06/2006 10:41:43
El problema que tienes es que solo recorres el primer nivel de controles dentro del formulario. Es por eso por lo que no llegas a los textbox que hay dentro de los Tab. Prueba con :

Public Sub LimpiarControles(ByVal _control As Object)

For Each _subControl As Object In _control.Controls
Select Case _control.GetType.ToString
Case "System.Windows.Forms.TextBox", "System.Windows.Forms.ComboBox"
_subControl.Text = ""
Case "System.Windows.Forms.ListBox", "System.Windows.Forms.ListView"
_subControl.Items.Clear()
case ...
Case Else
' No hacer nada
End Select
If _subControl.Controls.Count > 0 Then
LimpiarControles(_subControl)
End If
Next
End Sub

Y para limpiar todo el formulario, solo tendrías que hacer la llamada a Me.LimpiarControles (Me)
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

RE:Limpiar los controles cuando existe un TabContr

Publicado por FerCamargo (2 intervenciones) el 20/02/2009 17:51:37
Bueno yo he probado de esta manera y me ha funcionado... montalo en tu aplicación y veras que pasa:

lo que he hecho es meter el siguiente codigo en un modulo:

'Limpiar cajas de texto
Public Sub Limpiar_Cajas(ByVal Ctrol As Object)
' recorrer todos los controles del formulario indicado
For Each oControl As Control In fr.Controls
If TypeOf oControl Is TextBox Then
oControl.Text = "" ' eliminar el texto
End If
Next
End Sub

y simplemente para llamarlo desde cualquier formulario lo haces de esta menera:

Call Limpiar_Cajas(Me.controlcontenedor)

Donde 'Me' = se le indica el formulario de donde hay que limpiar
controlcotenedor= es el control que contiene los textbox ejemplo GroupBox1 o tabcontrol1, entre otros...
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

RE:Limpiar los controles cuando existe un TabContr

Publicado por FerCamargo (2 intervenciones) el 20/02/2009 17:54:23
Este si es le verdadero

Bueno yo he probado de esta manera y me ha funcionado... montalo en tu aplicación y veras que pasa:

lo que he hecho es meter el siguiente codigo en un modulo:

'Limpiar cajas de texto
Public Sub Limpiar_Cajas(ByVal Ctrol As Object)
' recorrer todos los controles del formulario indicado
For Each oControl As Control In Ctrol.Controls
If TypeOf oControl Is TextBox Then
oControl.Text = "" ' eliminar el texto
End If
Next
End Sub

y simplemente para llamarlo desde cualquier formulario lo haces de esta menera:

Call Limpiar_Cajas(Me.controlcontenedor)

Donde 'Me' = se le indica el formulario de donde hay que limpiar
controlcotenedor= es el control que contiene los textbox ejemplo GroupBox1 o tabcontrol1, entre otros...
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

RE:Limpiar los controles cuando existe un TabContr

Publicado por CNS (1 intervención) el 26/05/2009 20:57:25
las funciones q tenes q crear son las siguientes, yo lo hice para borrar controles GroupBox de janus, pero podes adaptarlo para controles de windows

Public Sub LimpiarControles(ByVal Frm As Form)
Dim ctlControl As Object
'Ciclo que recorre toda la coleccion de controles del form
For Each ctlControl In Frm.Controls
If ctlControl.GetType Is GetType(Janus.Windows.EditControls.UIGroupBox) Then
'llamo la funcion limpiar(q es la q limpia los UIgroupBox de Janus)
Limpiar(ctlControl)
End If
Application.DoEvents()

Next ctlControl
End Sub

'Procedimiento para borrar controles en un GroupBox

Public Sub Limpiar(ByVal Grupo As UIGroupBox)
Dim miControl As Object

For Each miControl In Grupo.Controls

If miControl.GetType Is GetType(Janus.Windows.GridEX.EditControls.EditBox) Then
miControl.Clear()
Else
If miControl.GetType Is GetType(Janus.Windows.GridEX.EditControls.MaskedEditBox) Then
miControl.Clear()
Else
If miControl.GetType Is GetType(Janus.Windows.EditControls.UIComboBox) Then
miControl.text = ""
Else
If miControl.GetType Is GetType(Janus.Windows.EditControls.UIRadioButton) Then
miControl.checked = False
Else
If miControl.GetType Is GetType(System.Windows.Forms.ComboBox) Then
miControl.SelectedIndex = -1

End If
End If
End If
End If
End If

Application.DoEvents()
Next
End Sub

y luego solo mandas a llamar la funcion desde donde queres limpiar de la sigiente forma:

LimpiarControles(Me)

saludos, espero les sirva :)
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