none
Listbox RRS feed

  • Pergunta

  • Ai galera será que podem me ajudar?
    Eu escrevo por exemplo em uma textbox um item e o adiciono para minha listbox, mas como faço pra verificar se o item ja existe na listbox, e se ja exite nao adicionar? 
    tentei com o indice mas vi que tava errado, pq eu to inserindo um texto e preciso compará-lo com o outro texto da listbox.
    Valeu!!! 
    terça-feira, 22 de setembro de 2009 20:19

Respostas

  • Olá Kinti


    Adicione o seguinte método para testar...

            private void button1_Click(object sender, EventArgs e)
            {
    
                adicionarItem(textBox1.Text);
            }
    
                public string adicionarItem(string item)
                {
                  if (item == "")
                    return ("");
                  if (listBox1.FindString (item, -1) < 0)
                  {
                    listBox1.Items.Add (item);
                    return ("");
                  }
                  MessageBox.Show ("\"" + item + "\"Ja possui", "Dados duplicado");
                  return (item);
                }
    Até a próxima...


    terça-feira, 22 de setembro de 2009 22:28
  • Você pode fazer assim:
    private void button1_Click(object sender, EventArgs e)
            {
                List<object> objetosParaRemover = new List<object>();
    
                foreach(object o in this.listBox1.Items)
                {
                    if (!this.listBox2.Items.Contains(o.ToString()))
                    {
                        this.listBox2.Items.Add(o.ToString());
                    }
                    else
                    {
                        objetosParaRemover.Add(o);   
                    }
                }
    
                foreach (object o in objetosParaRemover)
                {
                    this.listBox1.Items.Remove(o.ToString());
                }
            }
    quarta-feira, 23 de setembro de 2009 00:44
  • Com for, fora isso com linq ou expressao lambda, com for fica assim, apesar de achar que fica mais confuso

    private void button1_Click(object sender, EventArgs e)
            {
                List<object> objetosParaRemover = new List<object>();
    
                for (int i = 0; i < this.listBox1.Items.Count; i++)
                {
                    if (!this.listBox2.Items.Contains(this.listBox1.Items[i].ToString()))
                    {
                        this.listBox2.Items.Add(this.listBox1.Items[i].ToString());
                    }
                    else
                    {
                        objetosParaRemover.Add(this.listBox1.Items[i].ToString());
                    }
                }
    
                for (int i = 0; i < objetosParaRemover.Count; i++ )
                {
                    this.listBox1.Items.Remove(objetosParaRemover[i].ToString());
                }
            }
    quarta-feira, 23 de setembro de 2009 01:24

Todas as Respostas

  • Faça assim antes de adicionar no listbox:

    if(!this.listBox1.Items.Contains(this.textBox1.Text))
    {
         this.listBox1.Items.Add(this.textBox1.Text);
    }
    else
    {
         MessageBox.Show("Ja possui");
    }
    terça-feira, 22 de setembro de 2009 22:14
  • Olá Kinti


    Adicione o seguinte método para testar...

            private void button1_Click(object sender, EventArgs e)
            {
    
                adicionarItem(textBox1.Text);
            }
    
                public string adicionarItem(string item)
                {
                  if (item == "")
                    return ("");
                  if (listBox1.FindString (item, -1) < 0)
                  {
                    listBox1.Items.Add (item);
                    return ("");
                  }
                  MessageBox.Show ("\"" + item + "\"Ja possui", "Dados duplicado");
                  return (item);
                }
    Até a próxima...


    terça-feira, 22 de setembro de 2009 22:28
  • Valeu pessoal... Funcionou o programa...

    Agora, se puderem me ajudar com mais uma coisa eu agradeço.
    Eu passo os itens de um listbox para outro atraves de um botao. Como faço pra verificar se um item da listbox1 ja existe no listbox2?
    Aí se existir, apagar o item que ja existe na listbox1 e envia para a listbox2 os demais itens.

    quarta-feira, 23 de setembro de 2009 00:33
  • Você pode fazer assim:
    private void button1_Click(object sender, EventArgs e)
            {
                List<object> objetosParaRemover = new List<object>();
    
                foreach(object o in this.listBox1.Items)
                {
                    if (!this.listBox2.Items.Contains(o.ToString()))
                    {
                        this.listBox2.Items.Add(o.ToString());
                    }
                    else
                    {
                        objetosParaRemover.Add(o);   
                    }
                }
    
                foreach (object o in objetosParaRemover)
                {
                    this.listBox1.Items.Remove(o.ToString());
                }
            }
    quarta-feira, 23 de setembro de 2009 00:44
  • Valeu pela resposta, funcionou certinho... será que é possivel fazer esse codigo de uma forma mais simples? Por exemplo sem o foreach??


    Falow
    quarta-feira, 23 de setembro de 2009 01:14
  • Valeu pela resposta, funcionou certinho... será que é possivel fazer esse codigo de uma forma mais simples? Por exemplo sem o foreach??


    Falow
    quarta-feira, 23 de setembro de 2009 01:15
  • Com for, fora isso com linq ou expressao lambda, com for fica assim, apesar de achar que fica mais confuso

    private void button1_Click(object sender, EventArgs e)
            {
                List<object> objetosParaRemover = new List<object>();
    
                for (int i = 0; i < this.listBox1.Items.Count; i++)
                {
                    if (!this.listBox2.Items.Contains(this.listBox1.Items[i].ToString()))
                    {
                        this.listBox2.Items.Add(this.listBox1.Items[i].ToString());
                    }
                    else
                    {
                        objetosParaRemover.Add(this.listBox1.Items[i].ToString());
                    }
                }
    
                for (int i = 0; i < objetosParaRemover.Count; i++ )
                {
                    this.listBox1.Items.Remove(objetosParaRemover[i].ToString());
                }
            }
    quarta-feira, 23 de setembro de 2009 01:24
  • Valeu Galera...
    Deu tudo certo, programa resolvido...
    Falow
    quarta-feira, 23 de setembro de 2009 14:23