SPLIT PARA LISTBOX
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?
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?
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.
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.
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.
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!
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...
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([Ô] [Ô],[Ô][Ô]));
}
}
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.
Tudo que eu tento ele me retorna isso...
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]
Consegui!
tem alguma forma mais simples de se fazer isso? kkkkkk
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
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