listbox1 do listbox2

0

Wczytuję sobie dane z textbox do listbox1 za pomocą pętli for
ale mam zagwozdkę, jak wyciągnąć ciąg znaków który już jest w listbox1 do listbox 2 ?
Chodzi o to żeby z całej listy odfiltrować powtarzające się pozycje

 private void textBox1_TextChanged(object sender, EventArgs e)
        {
            textBox1.Select(0, 10);
            listBox1.BeginUpdate();
            for (int x = 0; x <= 0; x++)
            {
                listBox1.Items.Add(textBox1.Text);
            }
            listBox1.EndUpdate();
        }
0

Jeżeli nie chcesz żeby w listBoxie były duplikaty to można zrobić tak:

        private void TextBox1_TextChanged(object sender, EventArgs e)
        {
            textBox1.Select(0, 10);
            listBox1.BeginUpdate();
            for (int x = 0; x <= 0; x++)
            {
                if (!listBox1.Items.Contains(textBox1.Text))
                {
                    listBox1.Items.Add(textBox1.Text);
                }
            }
            listBox1.EndUpdate();
        }

Jeżeli chcesz tylko odfiltrować to może tak:

        private void Button1_Click(object sender, EventArgs e)
        {
            List<string> items = listBox1.Items.Cast<string>().Distinct().ToList();
            MessageBox.Show(string.Join(" ", items));
        }

Tylko tutaj trzeba uważać żeby w listBox1.Items znalazły się tylko stringi.

I nie do końca rozumiem tą pętle :)

for (int x = 0; x <= 0; x++)

Ona zawsze wykona się raz :)

0
Wilktar napisał(a):

Jeżeli nie chcesz żeby w listBoxie były duplikaty to można zrobić tak:

        private void TextBox1_TextChanged(object sender, EventArgs e)
        {
            textBox1.Select(0, 10);
            listBox1.BeginUpdate();
            for (int x = 0; x <= 0; x++)
            {
                if (!listBox1.Items.Contains(textBox1.Text))
                {
                    listBox1.Items.Add(textBox1.Text);
                }
            }
            listBox1.EndUpdate();
        }
...

Chcę właśnie żeby duplikaty były pokazane w listbox2 a nie w listbox1

  1. Wczytuje sobie ciąg znaków do textbox
  2. ciąg wędruje do listbox1
  3. jeśli za np 15 razem ciąg który już jest w listbox1 ma trafić do listbox2 (przy każdym wpisaniu w textbox musi być sprawdzana zależność czy dokładnie taki sam ciąg jest w listbox1 jeśli jest nie dopisuj, nie usuwaj, dodaj do listbox2)

Jeżeli chcesz tylko odfiltrować to może tak:

        private void Button1_Click(object sender, EventArgs e)
        {
            List<string> items = listBox1.Items.Cast<string>().Distinct().ToList();
            MessageBox.Show(string.Join(" ", items));
        }

Tylko tutaj trzeba uważać żeby w listBox1.Items znalazły się tylko stringi.

I nie do końca rozumiem tą pętle :)

for (int x = 0; x <= 0; x++)

Ona zawsze wykona się raz :)

Ma sie wykonać tylko raz ponieważ dodaje tylko jeden element wczytany z textbox do listbox, duplikaty tego samego ciągu np x30 nie są mi potrzebne wczytane przy pierwszym podejściu do textbox

0

Problem rozwiązany za pomocą warunku IF o dziwo wstawiałem go w nieodpowiednim miejscu i nie działało teraz pytanie w jaki sposób policzyć ciągi dodane do listbox1 ?

Jeden wiersz rozwiązuje wszystko

label1.Text = listBox1.Items.Count.ToString();

1 użytkowników online, w tym zalogowanych: 0, gości: 1