ARRAY DE CONTROLES

FBUR 26/10/2010 08:48:41
#355911
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
PEGUDO 26/10/2010 12:55:42
#355948
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.
FBUR 26/10/2010 15:14:13
#355968
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.
LUIZCOMINO 26/10/2010 17:07:07
#355975
Dim dados(3) As String
dados(1) = Text1
dados(2) = Text2
dados(3) = Text3
LUIZCOMINO 26/10/2010 17:10:38
#355976
ou

Dim texts(4) As TextBox

texts(1).Text = dado1
texts(2).Text = dado2
texts(3).Text = dado3
texts(4).Text = dado4
FBUR 26/10/2010 21:27:05
#355991
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:


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
RODRIGOFERRO 26/10/2010 21:52:59
#355992
Bom se tu quer agrupar o evento click faça assim...

  

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...
LUIZCOMINO 26/10/2010 22:06:43
#355994
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
FBUR 27/10/2010 12:49:17
#356034
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. :)
Tópico encerrado , respostas não são mais permitidas