LIMPAR TODOS OS CAMPOS DOS FORMS

EDUARDONICE 30/12/2013 21:22:36
#432547
Olá pessoal... não tenho muita experiência com o visual basic e gostaria de saber se existe como criar algo dentro de um módulo que limpe todos os textbox dos meus forms, assim não teria que ficar repetindo código. Na realidade eu pesquisei na Internet e encontrei o seguinte no site http://social.msdn.microsoft.com/Forums/pt-BR/eba42474-33a9-4a5c-946c-1ef4043dcbc3/sub-limpar-campos-no-vbasic?forum=vsvbasicpt

VB.NET

Public Shared Sub ClearForm(parent As System.Windows.Forms.Control)
For Each ctrControl As System.Windows.Forms.Control In parent.Controls
[ô]Loop through all controls
If Object.ReferenceEquals(ctrControl.[GetType](), GetType(System.Windows.Forms.TextBox)) Then
[ô]Check to see if it[ô]s a textbox
[ô]If it is then set the text to String.Empty (empty textbox)
DirectCast(ctrControl, System.Windows.Forms.TextBox).Text = String.Empty
ElseIf Object.ReferenceEquals(ctrControl.[GetType](), GetType(System.Windows.Forms.RichTextBox)) Then
[ô]If its a RichTextBox clear the text
DirectCast(ctrControl, System.Windows.Forms.RichTextBox).Text = String.Empty
ElseIf Object.ReferenceEquals(ctrControl.[GetType](), GetType(System.Windows.Forms.ComboBox)) Then
[ô]Next check if it[ô]s a dropdown list
[ô]If it is then set its SelectedIndex to 0
DirectCast(ctrControl, System.Windows.Forms.ComboBox).SelectedIndex = -1
ElseIf Object.ReferenceEquals(ctrControl.[GetType](), GetType(System.Windows.Forms.CheckBox)) Then
[ô]Next uncheck all checkboxes
DirectCast(ctrControl, System.Windows.Forms.CheckBox).Checked = False
ElseIf Object.ReferenceEquals(ctrControl.[GetType](), GetType(System.Windows.Forms.RadioButton)) Then
[ô]Unselect all RadioButtons
DirectCast(ctrControl, System.Windows.Forms.RadioButton).Checked = False
End If
If ctrControl.Controls.Count > 0 Then
[ô]Call itself to get all other controls in other containers
ClearForm(ctrControl)
End If
Next
End Sub

Tentei colocar isto no meu módulo e tive que tirar o [Ô]Shared[Ô] da primeira linha que ele não aceitava, mas o restante foi legal. Entendi a lógica, porém como é que eu faço para chamar de dentro dos meus forms? Se eu coloco ClearForms() ele dá o seguinte erro: [Ô]Argument not specified for parameter [ô]parent[ô] of [ô]Public Sub ClearForm[ô] (parent as System.Windows.Forms.Control). Sei que está faltando passar alguma coisa e já tentei com o nome do formulário, já tentei this, etc... Alguém poderia me ajudar?
PROGRAMADORVB6 30/12/2013 21:50:14
#432549
Resposta escolhida
 Public Sub ClearTextBox(ByVal root As Control)
For Each ctrl As Control In root.Controls
ClearTextBox(ctrl)
If TypeOf ctrl Is TextBox Then
CType(ctrl, TextBox).Text = String.Empty
End If
Next ctrl
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
ClearTextBox(Me)
End Sub
EDUARDONICE 31/12/2013 15:18:39
#432570
Obrigado ProgramadorVB6

Ao ver o teu código vi a palavra [Ô]Me[Ô] na chamada para apagar os Textbox. Como postei acima, não tenho muita experiência em VB, mas percebi que a palavra [Ô]Me[Ô] se refere ao próprio Form. Sendo assim, apenas substituí no meu Form a Chamada ClearForms() por ClearForms(Me) e funcionou perfeitamente.

Grato pela dica e um feliz 2014.
Tópico encerrado , respostas não são mais permitidas