ARRAY DE CONTROLES
Bom dia.
Gostaria de saber como é que se cria um array de controles no VB.NET 2008.
Por exemplo. No VB6, se eu quisesse criar um array com TextBox chamada txtNome, era só copiar e colar a txt, ficando: txtNome(0), txtNome(1), txtNome(3) e assim por diante.
Como se faz isso no VB.NET?
Andei pesquisando e a maioria das respostas são assim:
http://social.msdn.microsoft.com/forums/pt-BR/vsvbasicpt/thread/f3e946f1-046a-461f-b5b2-784e5d9a4067
Ficou tão chato assim no .NET mesmo ou tem uma maneira mais simples de se fazer?
[ ]'s
Gostaria de saber como é que se cria um array de controles no VB.NET 2008.
Por exemplo. No VB6, se eu quisesse criar um array com TextBox chamada txtNome, era só copiar e colar a txt, ficando: txtNome(0), txtNome(1), txtNome(3) e assim por diante.
Como se faz isso no VB.NET?
Andei pesquisando e a maioria das respostas são assim:
http://social.msdn.microsoft.com/forums/pt-BR/vsvbasicpt/thread/f3e946f1-046a-461f-b5b2-784e5d9a4067
Ficou tão chato assim no .NET mesmo ou tem uma maneira mais simples de se fazer?
[ ]'s
Cara, eu costumo usar uma collection que, eu acho, muito melhor de se trabalhar.
Eu declaro a collection:
[txt-color=#0000f0]Private[/txt-color] CaixasTexto [txt-color=#0000f0]as New Collection [/txt-color][txt-color=#007100][ô]Se der erro, tente retirar o [Ô]New[Ô][/txt-color]
Supondo que meu formulário chama-se Form1, eu faço:
[txt-color=#0000f0]Dim[/txt-color] Caixa [txt-color=#0000f0]as TextBox[/txt-color]
[txt-color=#0000f0]For Each[/txt-color] Caixa [txt-color=#0000f0]In[/txt-color] Fom1.Controls.OfType(Of TextBox)
CaixasTexto.Add(Caixa)
[txt-color=#0000f0]Next[/txt-color]
Daà você trabalha da maneira que desejar com a collection.
Valeu.
Eu declaro a collection:
[txt-color=#0000f0]Private[/txt-color] CaixasTexto [txt-color=#0000f0]as New Collection [/txt-color][txt-color=#007100][ô]Se der erro, tente retirar o [Ô]New[Ô][/txt-color]
Supondo que meu formulário chama-se Form1, eu faço:
[txt-color=#0000f0]Dim[/txt-color] Caixa [txt-color=#0000f0]as TextBox[/txt-color]
[txt-color=#0000f0]For Each[/txt-color] Caixa [txt-color=#0000f0]In[/txt-color] Fom1.Controls.OfType(Of TextBox)
CaixasTexto.Add(Caixa)
[txt-color=#0000f0]Next[/txt-color]
Daà você trabalha da maneira que desejar com a collection.
Valeu.
Caro PEGUDO, não entendi...
Isso equivale a copiar e colar uma txt no VB6 para ter TextBox(0), TextBox(1), TextBox(2), etc?
Não consegui entender. Fiz isso no meu código mas não consegui fazer uma comparação.
Isso equivale a copiar e colar uma txt no VB6 para ter TextBox(0), TextBox(1), TextBox(2), etc?
Não consegui entender. Fiz isso no meu código mas não consegui fazer uma comparação.
Dim dados(3) As String
dados(1) = Text1
dados(2) = Text2
dados(3) = Text3
dados(1) = Text1
dados(2) = Text2
dados(3) = Text3
ou
Dim texts(4) As TextBox
texts(1).Text = dado1
texts(2).Text = dado2
texts(3).Text = dado3
texts(4).Text = dado4
Dim texts(4) As TextBox
texts(1).Text = dado1
texts(2).Text = dado2
texts(3).Text = dado3
texts(4).Text = dado4
Amigos, desculpem. Não estou entendendo.
Esses comandos criam as txt's pra mim?
Vejam, sou usuário do VB6, então estou tentando comparar como era e como é agora.
No VB6, eu tinha lá a minha txtNome no meu Form1.
Eu clicava em cima da txtNome e ficava assim:
AÃ eu copiava e colava o controle txtNome no meu form e o VB6 perguntava se eu queria criar um array de controles. Eu respondia que sim e meu Form1 ficava com a txtNome(0) e txtNome(1).
Ao clicar sobre a txt, fica:
AÃ eu fazia um Select Case para usar o controle desejado, assim:
Bom, mostrei como eu criava as txtNome(0) e txtNome(1) e como uso.
Desculpem, mas dessa fora está muito superficial. Não entendi se o que vcs explicaram é para usar, criar ou os dois.
Se puderem explicar com mais detalhes, agradeço!
Muito obrigado!
[ ]'s
Esses comandos criam as txt's pra mim?
Vejam, sou usuário do VB6, então estou tentando comparar como era e como é agora.
No VB6, eu tinha lá a minha txtNome no meu Form1.
Eu clicava em cima da txtNome e ficava assim:
Private Sub txtNome_Change()
End Sub
AÃ eu copiava e colava o controle txtNome no meu form e o VB6 perguntava se eu queria criar um array de controles. Eu respondia que sim e meu Form1 ficava com a txtNome(0) e txtNome(1).
Ao clicar sobre a txt, fica:
Private Sub txtNome_Change(Index As Integer)
End Sub
AÃ eu fazia um Select Case para usar o controle desejado, assim:
Private Sub txtNome_Change(Index As Integer)
Select Case Index
Case 0
[ô]para usar a txtNome(0)
Case 1
[ô]para usar a txtNome(1)
End Select
End Sub
Bom, mostrei como eu criava as txtNome(0) e txtNome(1) e como uso.
Desculpem, mas dessa fora está muito superficial. Não entendi se o que vcs explicaram é para usar, criar ou os dois.
Se puderem explicar com mais detalhes, agradeço!
Muito obrigado!
[ ]'s
Bom se tu quer agrupar o evento click faça assim...
Pode ver que concatenei, nao so diferentes tipos de controles, mas diferentes tipos de eventos...
Private Sub ClickButton(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Enter
Dim btn As Button
btn = CType(sender, Button)
MsgBox(btn.Text)
End Sub
Pode ver que concatenei, nao so diferentes tipos de controles, mas diferentes tipos de eventos...
Oi amigo deixa eu explicar melhor, e se eu estiver errado que os amigos me corrijam.
Dim texts(4) As new TextBox [ô]aqui ele faz a instância com uma array de 4 poisções
texts(1).Text = [Ô]dado1[Ô] [ô] o dado1 ira ser guardado na posição 1 da arrary
texts(2).Text = [Ô]dado2[Ô] [ô][ô] o dado2 ira ser guardado na posição 2 da arrary
texts(3).Text = [Ô]dado3[Ô] [ô] o dado3 ira ser guardado na posição 3 da arrary
texts(4).Text = [Ô]dado4[Ô] [ô] o dado1 ira ser guardado na posição 4 da arrary
para fazer o select case basta fazer a mesma coisa:
[ô]----------------------------------------------------------------------------
Select Case Index
Case 0
[ô]para usar a texts(1)
Case 1
[ô]para usar a texts(2)
End Select
Dim texts(4) As new TextBox [ô]aqui ele faz a instância com uma array de 4 poisções
texts(1).Text = [Ô]dado1[Ô] [ô] o dado1 ira ser guardado na posição 1 da arrary
texts(2).Text = [Ô]dado2[Ô] [ô][ô] o dado2 ira ser guardado na posição 2 da arrary
texts(3).Text = [Ô]dado3[Ô] [ô] o dado3 ira ser guardado na posição 3 da arrary
texts(4).Text = [Ô]dado4[Ô] [ô] o dado1 ira ser guardado na posição 4 da arrary
para fazer o select case basta fazer a mesma coisa:
[ô]----------------------------------------------------------------------------
Select Case Index
Case 0
[ô]para usar a texts(1)
Case 1
[ô]para usar a texts(2)
End Select
Caros colegas,
ZEROCAL, apesar de entender o que vc explicou, o conceito de utilizar controles array era justamente de não precisar declarar os controles como vc fez no exemplo. Se eu tiver 20 botões, vou ter que escrever o nome dos botões.
De qualquer forma, entendi. A questão é por que raios essa funcionalidade tão utilizada no VB6 não está mais presente de maneira simples no VB.NET? (assim como outras tão úteis)
Luiz, ainda não consegui entender o seu exemplo...
De qq forma, entendi. :)
ZEROCAL, apesar de entender o que vc explicou, o conceito de utilizar controles array era justamente de não precisar declarar os controles como vc fez no exemplo. Se eu tiver 20 botões, vou ter que escrever o nome dos botões.
De qualquer forma, entendi. A questão é por que raios essa funcionalidade tão utilizada no VB6 não está mais presente de maneira simples no VB.NET? (assim como outras tão úteis)
Luiz, ainda não consegui entender o seu exemplo...
De qq forma, entendi. :)
Tópico encerrado , respostas não são mais permitidas