none
Indexar campos na tela RRS feed

  • Pergunta

  • No VB 6 podiamos criar os campos no form como vetor atravez do Index. Ex.: TextBox(1),Text, TextBox(2).Text, etc e fazer um For Next no código pra acessar todos os campos da tela, não vi  na o Index na caixa Propriedades. Isso não existe no VB.NET ? Tem que ser TexBox1.text, TextBox2.text e chamar um a um ?

    Grato, Maurício

    terça-feira, 28 de agosto de 2012 20:27

Respostas

  • Olá Maurício

    Não sei se entendi direito o que necessita, mas acho que é algo parecido com isso.

    Para limpar os controles do formulário, por exemplo:

    Public Sub Limpar(ByVal controlP As Control)
            Dim ctl As Control
            For Each ctl In controlP.Controls
                If TypeOf ctl Is TextBox Then
                    DirectCast(ctl, TextBox).Text = String.Empty
                ElseIf TypeOf ctl Is RichTextBox Then
                    DirectCast(ctl, RichTextBox).Text = String.Empty
                ElseIf TypeOf ctl Is RadioButton Then
                    DirectCast(ctl, RadioButton).Checked = False
                ElseIf ctl.Controls.Count > 0 Then
                    Limpar(ctl)
                End If
            Next
    End Sub

    Para usar basta digitar:

    Limpar(me) 'Para limpar todos os controles do formulário

    ou

    Limpar(groupbox1) 'Para limpar somente os controles dentro do groupbox1

    Obs.: No código que postei ele só limpa os textbox, richTextBox e RadioButton. Para interagir com mais controles é só acrescentar conforme sua necessidade.

    Pode também usar para outras finalidades que não seja limpar os controles.

    Att.,

    Jeimes Ribeiro


    • Editado Jeimes Ribeiro terça-feira, 28 de agosto de 2012 20:53
    • Marcado como Resposta MauricioBogo quarta-feira, 29 de agosto de 2012 00:16
    terça-feira, 28 de agosto de 2012 20:51

Todas as Respostas

  • Olá Maurício

    Não sei se entendi direito o que necessita, mas acho que é algo parecido com isso.

    Para limpar os controles do formulário, por exemplo:

    Public Sub Limpar(ByVal controlP As Control)
            Dim ctl As Control
            For Each ctl In controlP.Controls
                If TypeOf ctl Is TextBox Then
                    DirectCast(ctl, TextBox).Text = String.Empty
                ElseIf TypeOf ctl Is RichTextBox Then
                    DirectCast(ctl, RichTextBox).Text = String.Empty
                ElseIf TypeOf ctl Is RadioButton Then
                    DirectCast(ctl, RadioButton).Checked = False
                ElseIf ctl.Controls.Count > 0 Then
                    Limpar(ctl)
                End If
            Next
    End Sub

    Para usar basta digitar:

    Limpar(me) 'Para limpar todos os controles do formulário

    ou

    Limpar(groupbox1) 'Para limpar somente os controles dentro do groupbox1

    Obs.: No código que postei ele só limpa os textbox, richTextBox e RadioButton. Para interagir com mais controles é só acrescentar conforme sua necessidade.

    Pode também usar para outras finalidades que não seja limpar os controles.

    Att.,

    Jeimes Ribeiro


    • Editado Jeimes Ribeiro terça-feira, 28 de agosto de 2012 20:53
    • Marcado como Resposta MauricioBogo quarta-feira, 29 de agosto de 2012 00:16
    terça-feira, 28 de agosto de 2012 20:51
  • Maravilha Jeimes,

    Você tem sido muito util, se por acaso você der aula em algum curso no Rio de Janeiro me avise, pois essa tarefa de migrar do VB6 para VB10 não está sendo fácil.

    Muito obrigado.

    Maurício

    quarta-feira, 29 de agosto de 2012 00:32
  • Olá Maurício

    Não dou aula não, mas sempre que tiver dúvida pode postar que alguém irá lhe ajudar.

    A dificuldade no começo é normal, depois você vai ver que é mais simples do que imagina e irá tirar de letra.

    Att.,

    Jeimes Ribeiro

    quarta-feira, 29 de agosto de 2012 11:18
  • Ola Jaimes,

    Na rotina acima (Limpar), tem como indexar os objetos da tela, eu gostaria de fazer um "For Each ctl" para carregar os campos de uma tabela do banco de dados para a tela, mas dessa eu preciso saber qual objeto TextBox, qual ComboBox, etc ... para poder mover o correspondente campo da tabela.   Como vc deve ter notado eu não gosto de trabalhar com o objeto linkado deretamente na tabela, pelo menos nunca trabalhei assim até hoje!

    Grato, Maurício

    quarta-feira, 29 de agosto de 2012 12:34