LOOP EM TEXTBOX

THIAGOMANZ 21/01/2010 18:16:53
#332544
Pessoal gostaria de saber por exemplo tenho 50 textbox e quero criar um loop onde eu mudo p visivel a qtde de textbox que o usuario escolher, a duvida e a seguinte como faço isso em um alinha de comando onde uso o index do loop p ir nomeando os textboxs a cada loop para nao ter que escrever 50 vezes os textbox

Ex.
for i = 0 to 50
textbox1.visible = true
textbox2.visible = true
textbox3.visible = true
'e assim vai ate o textbox 50
next
eu gostaria de fazer tipo assim:

for i = 0 to 50
textbox(i).visible = true
next

entenderam? eu nao sei a sintaxe p colocar essa variavel [Ô] i [Ô] p ir selecionando os textbox....
FOXMAN 21/01/2010 20:04:47
#332548
Amigo, eu não sei se te ajuda.....

mas eu faço algo assim....


  Private Function valida(ByVal objs As Control) As Boolean
valida = True
Dim ctl As Control, nobj As Integer = 0
For Each ctl In objs.Controls
If TypeOf ctl Is TextBox Then
If ctl.Text.Length = 0 Then
ctl.BackColor = Color.Red
nobj += 1
Else
ctl.BackColor = Color.LightGray
End If
ElseIf TypeOf ctl Is ComboBox Then
If ctl.Text.Length = 0 Then
ctl.BackColor = Color.Red
nobj += 1
Else
ctl.BackColor = Color.LightGray
End If
End If
Next

If nobj > 0 Then
valida = False
End If

End Function


A função acima valida campos em textbox e combox
ASHKATCHUP 21/01/2010 20:11:46
#332550
Basicamente seria:


For i = 0 To Me.Controls.Count - 1
If Me.Controls.Item(i).GetType().ToString = [Ô]System.Windows.Forms.TextBox[Ô] Then
Me.Controls(i).Visible = False
End If
Next


Mas eu acho que dá pra otimizar.
ASHKATCHUP 21/01/2010 20:16:14
#332553
Ou, otimizado:


Dim Resultado As IEnumerable(Of TextBox) = Me.Controls.OfType(Of TextBox)()
Dim objTextbox As TextBox
[ô]
For Each objTextbox In Resultado
objTextbox.Visible = False
Next


Mas a parte de controlar os [Ô]50[Ô] fica por tua conta.
FOXMAN 21/01/2010 21:03:19
#332560
é a solução do ASHKATCHUP apenas para deixar o textbox visível ou não funciona.

No meu caso eu valido o campo, e deixo ele colorido dependendo da validação.

No código tem ainda a validação de combobox

Agora se for soh para dar um loop em todos os textbox do formulário basta fazer assim :

  Dim ctrl As Control
For Each ctrl In Me.Controls
If TypeOf ctrl Is TextBox Then
ctrl.Visible = False
End If
Next


ASHKATCHUP 21/01/2010 21:14:26
#332563
Resposta escolhida
FoxMan:

Eu acho que é melhor utilizar o método [Ô]ofType[Ô], pois assim evita varrer TODOS controles da tela, caso você tenha muitos.
Tópico encerrado , respostas não são mais permitidas