SPLIT PARA LISTBOX

FROSTYNHO 20/10/2016 12:26:46
#468249
Estou com o seguinte problema pessoal, estou dando Split em uma string e jogando os dados em um listbox... até aí tudo bem...
segue um exemplo da string:

String Nomes = [Ô]Fernando, Thiago, Wilson, Diego[Ô]

separo os nomes com o split e jogo no listbox

só que o problema é que a string pode variar toda vez que dou o split pode ter um nome a menos por exemplo, e eu preciso remover somente esse nome que saiu da string.
não posso dar clear na listbox e adicionar de novo pois o usuario precisa deixar alguns nomes selecionados se eu dar clear perco a seleção que o usuario fez

já tentei de tudo! alguém ja fez algo parecido?
DS2T 20/10/2016 12:57:02
#468251
O lance é fazer um For e percorrer cada item no Listbox. Se o item não existir no array retornado pelo split, basta removê-lo.
JABA 20/10/2016 13:58:41
#468253
Frostynho, e se o que o usuário selecionou não estiver mais na nova string? Num daria no mesmo?

Uma possível solução:

Guarde a seleção que foi feita pelo usuário.
Refaça tudo novamente com a nova string.
Procure a linha que tinha sido selecionada pelo usuário e selecione-a novamente.
FROSTYNHO 20/10/2016 14:17:55
#468255
Citação:

:
Frostynho, e se o que o usuário selecionou não estiver mais na nova string? Num daria no mesmo?

Uma possível solução:

Guarde a seleção que foi feita pelo usuário.
Refaça tudo novamente com a nova string.
Procure a linha que tinha sido selecionada pelo usuário e selecione-a novamente.


então jaba, se o usuário selecionar um nome que não existe mais na string não tem problema remove-los, o problema é remover os que ainda existem!
FROSTYNHO 20/10/2016 14:19:52
#468256
Citação:

:
O lance é fazer um For e percorrer cada item no Listbox. Se o item não existir no array retornado pelo split, basta removê-lo.


vou tentar, e posto o resultado...

FROSTYNHO 20/10/2016 15:50:00
#468259
Consegui verificar se o item já esta na listbox e adicionar, só não estou conseguindo remover os itens que não existem mais na string que dei split, fiz assim:

            foreach (string player in players)
{
bool playerfound = false;

foreach (var item in listBox1.Items)
{
if (item.ToString().Equals(player.Replace([Ô] [Ô], [Ô][Ô])))
{
playerfound = true;
break;
}
}
if (!playerfound)
{
listBox1.Items.Add(player.Replace([Ô] [Ô],[Ô][Ô]));
}
}
JABA 20/10/2016 16:13:08
#468260
Se é a String que muda, então você tem que varrer o ListBox e comparar o conteúdo dele com as strings geradas pelo Split. Se o item que está no controle não estiver no que foi gerado pelo split, remove-o.
FROSTYNHO 20/10/2016 17:35:49
#468262
Tudo que eu tento ele me retorna isso...
JABA 20/10/2016 17:52:48
#468264
Isso acontece porque você está usando o [Ô][txt-color=#0000f0]foreach[/txt-color][Ô]. Quando se remove nesse caso, ele acusa erro. Em vez de [Ô][txt-color=#0000f0]foreach[/txt-color][Ô] utilize[txt-color=#0000f0] for (int i=0; i<ListBox.Items.Count; i++)[/txt-color]
FROSTYNHO 20/10/2016 19:06:05
#468269
Consegui!
            string[] words = textBox1.Text.Split([ô],[ô]);

for (int x = 0; x <= listBox1.Items.Count -1; x++)
{
bool delete = false;
for (int i = 0; i <= words.Length - 1; i++)
{
if (listBox1.Items[x].Equals(words[i]))
{
delete = false;
break;
}
else
{
delete = true;
}
}
if (delete)
{
listBox1.Items.Remove(listBox1.Items[x]);
x = 0;
}
}
}

tem alguma forma mais simples de se fazer isso? kkkkkk
DS2T 23/10/2016 19:29:53
#468320
        private void Remove()
{
string texto = [Ô]Hexa, Flamengo[Ô];
string[] palavras = texto.Split([ô],[ô]);

for (int x = 0; x <= listBox1.Items.Count - 1; x++)
{
if (!palavras.Contains(listBox1.Items[x]))
{
listBox1.Items.RemoveAt(x);
x -= 1;
}
}
}



Lembre-se de importar o System.Linq para ele colocar os métodos IEnumerable (Contains) no array.

Abraços!
Faça seu login para responder