Jump to content
User LoL

[Resolvido] For Each está dando problemas

Recommended Posts

User LoL

Estou com um código que tem que varrer 3 listbox, e salvar os valores, acontece que não estou conseguindo conciliar os 3 for each ao mesmo tempo,o código é esse:

For Each leo As String In Me.ListBox1.Items
		    For Each leo2 As String In Me.ListBox2.Items
			    For Each leo3 As String In Me.ListBox3.Items
				    Salvar.WriteLine(" linha " & leo & " posicao " & leo2 & " caracter " & leo3 & " fim ")
			    Next
		    Next
	    Next

se os 3 listbox tem somente um item,salva normalente, mas se tem 2,ja salva 3 vezes cada item, porque,como faço pra corrigir isso? Não da pra colocar um Salvar.WriteLine depois do next, porque os valores tem que estar na mesma linha,conforme o codigo acima

Share this post


Link to post
Share on other sites
thoga31

Por cada item da ListBox1 vais analisar todos os elementos da ListBox2, e por cada elemento da ListBox2 vais analisar todos os da ListBox3.

Não entendo bem o que pretendes. Tens 3 ListBoxes. Queres que, tendo ambas o mesmo nº de elementos, ter a associação entre cada nº elemento das listas? Tipo isto?

LB1:
Lin1
Lin2

LB2:
Pos1
Pos2

LB3:
Car1
Car2

ASSOCIAÇÃO (resultado pretendido):
linha "Lin1" posicao "Pos1" caracter "Car1" fim
linha "Lin2" posicao "Pos2" caracter "Car2" fim


Knowledge is free!

Share this post


Link to post
Share on other sites
User LoL

Não,na verdade a sequencia logica seria essa:

For Each leo As String In Me.ListBox1.Items
Next
For Each leo2 As String In Me.ListBox2.Items
Next
For Each leo3 As String In Me.ListBox3.Items
Next
Salvar.WriteLine(" linha " & leo & " posicao " & leo2 & " caracter " & leo3 & " fim ")

esse código aqui também nao esta funcionando.

Oque ele deveria fazer e varrer os itens do listbox1,listbox2 e listbox 3, Para linha existente no listbox, ele cria uma linha no documento do savedialog

Edited by User LoL

Share this post


Link to post
Share on other sites
nelsonr

Há ai qualquer coisa mal explicada sobre o propósito de cada lista.

Queres passar uma vez em cada item de cada lista?

Porque não poes o Salvar.WriteLine dentro de cada foreach?

Vejo que a lista1 tem linhas, a 2 tem a posicao e a 3 tem caracteres.

Queres mostrar só os selecionados de cada lista?

Mostra lá o resultado que pretendias que o WriteLine mostrasse

Share this post


Link to post
Share on other sites
User LoL

Vou explicar melhor, Estou armazenando valores diferentes em cada listbox e quero colocar os valores da linha 1 em sequencia, da linha 2 em outra sequencia,e assim por diante. mais ou menos assim:

esse seria os 3 listbox, cada um com seu respectivo valor:

listbox1 listbox2 listbox3

item X item Y item Z

itemX2 item Y2 itemZ2

teste testando 99

Agora, quero que salve exatamente assim:

esse e o "Item X" e também salvamos o "item Y" e aqui o "item Z"

esse e o "item X2" e também salvamos o "item Y" e aqui o "item Z"

esse e o "teste" e também salvamos o "testando" e aqui o "99"

Share this post


Link to post
Share on other sites
nelsonr

E as listboxes têm sempre o mesmo número de elementos?

Não tenho o VB.NET instalado e nao me lembro se o primeiro elemento em vb.net é o 0 ou o 1, mas podes fazer algo assim:

For index as Integer = 0 to Me.ListBox1.Items.Count-1
  Salvar.WriteLine("esse e o " & ListBox1.Items(index) & " e também salvamos o " & ListBox2.Items(index) & " e aqui o " & ListBox3.Items(index))
Next

Convem certificares-te que as listboxs têm o mesmo número de items antes de fazeres isso (e que a listbox1 tem pelo menos 1 item)

Edited by nelsonr

Share this post


Link to post
Share on other sites
User LoL

Sim a lista terá sempre o mesmo numero de itens, porem não estou conseguindo fazer aquilo que postei acima, criar uma linha no salvar para cada linha existente no listbox

vou testar esse codigo,ja vejo se da certo

Edited by User LoL

Share this post


Link to post
Share on other sites
nelsonr

Eim?

E fizeste debug para ver se entra ali dentro do ciclo?

Instalei aqui o VB.NET num instante e testei o exemplo que pus. Funciona bem.

Só não testei o Salvar.WriteLine, mas enviei o resultado para uma variável e ficou o esperado.

Share this post


Link to post
Share on other sites
User LoL

O código que eu tentei adaptar ficou assim

For Each leo As String In Me.ListBox1.Items
		    For i = 0 To Me.ListBox1.Items.Count - 1
			    Salvar.WriteLine("esse e o " & ListBox1.Items(i) & " tambem temos o " & ListBox2.Items(i) & " e aqui o  " & ListBox3.Items(i) )
		    Next
	    Next

O problema é esse: se os listbox tem 2 itens ele escreve duas vezes cada item, se tem 5 ele escreve 5 vezes cada um dos itens, porque?

Share this post


Link to post
Share on other sites
User LoL

Desculpe postei errado, o código funcionou direitinho. Obrigado,ja pode dar o tópico como resolvido

Share this post


Link to post
Share on other sites
thoga31

Desculpe postei errado, o código funcionou direitinho. Obrigado,ja pode dar o tópico como resolvido

Dá tu o tópico como resolvido, o tópico é teu.

Topo da página, Ferramentas do Autor, Tópico Resolvido ;)


Knowledge is free!

Share this post


Link to post
Share on other sites
User LoL

Não aparece mais isso pra mim :( Já finalizei alguns tópicos,depois deixei de entrar uns dias e quando voltei não consegui mais finalizar nenhum tópico,não aparece mais, só Responder a este tópico

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.