Entwickler-Ecke

Basistechnologien - Listbox Markierung auswerten


tomycat - Do 09.07.15 21:23
Titel: Listbox Markierung auswerten
hallo,
ich habe eine Listbox und die ist bei "selctionmode" auf Multiextended gestellt.

mit...

C#-Quelltext
1:
name_der_listbox.Items.Add(variable_von_der_textbox);                    

... fülle ich meine Listbox.

Nach dem ich 5 von 10 makiert habe möchte die weiterverarbeiten.

C#-Quelltext
1:
2:
3:
4:
5:
6:
private void addieren_Click(object sender, EventArgs e)
{
    // makiertes zusammenaddieren
    // keine Ahung wie?
    Messagebox.Show(das_ergebis)
}


Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Moderiert von user profile iconTh69: Code- durch C#-Tags ersetzt
Moderiert von user profile iconTh69: Titel geändert.


Ralf Jansen - Fr 10.07.15 10:14

Sobald nach einer Änderung der Selektion genau 5 einträge markiert sind. Rechnet folgender Code die selektierten Einträge zusammen.
Unetr der Annahme das die in der ListBox enthalten Einträge alle als Integer interpretierbar sind.


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
private void name_der_listbox_SelectedIndexChanged(object sender, EventArgs e)
{
    Int32 das_ergebis;
    if (name_der_listbox.SelectedItems.Count == 5)
    {
        das_ergebis= name_der_listbox.SelectedItems.Cast<string>().Sum(x => Convert.ToInt32(x));
        MessageBox.Show(result.ToString());
    }
}


tomycat - Sa 11.07.15 20:52

hmmmm jein.

Sorry, ich muss anderst fragen:

C#-Quelltext
1:
2:
3:
4:
5:
   private void button15_Click(object sender, EventArgs e)
        {
            string die_makierung = name_der_listbox.SelectedItem.ToString();
            MessageBox.Show(die_makierung);
        }

Ich makiere etwas in der listbox.

3
4
2 <- makiert
6 <- makiert
2 <- makiert
5
3
5
6

können 3 oder 1 oder alle mal sein.
Ein klick auf dem Button und es "2 6 2" kommen.
Leider kommt immer nur ein makierter Wert in der Messagebox. :-(

Moderiert von user profile iconTh69: Code- durch C#-Tags ersetzt


tomycat - Sa 11.07.15 21:32

soweit bin ich gekommen:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
private void button15_Click(object sender, EventArgs e)
{
     string itemText
     for(int a = 0; a < name_der_listbox.SelectedItems.Count;a++)
     {   
          ifthis.name_der_listbox.Items[a] == "ist makiert")
          {
              itemText   += this.name_der_listbox.Items[a].ToString();
              itemText   += " ";
          }

          MessageBox.Show(itemText);
     }            
}

Woher weis ich ob die Zeile in der listbox makiert ist oder nicht?

Moderiert von user profile iconTh69: Code- durch C#-Tags ersetzt


Delete - Sa 11.07.15 22:01

- Nachträglich durch die Entwickler-Ecke gelöscht -


Th69 - Sa 11.07.15 22:02

Hallo,

die einzelnen markierten Elemente sind in der SelectedItems-Liste enthalten, d.h. du mußt natürlich dann innerhalb deiner Schleife auf diese zugreifen (und nicht auf Items - und die if-Anweisung kann dann ganz entfallen).
Noch einfacher geht es mit der foreach-Schleife:

C#-Quelltext
1:
2:
3:
4:
foreach (var item in listBox.SelectedItems)
{
   MessageBox(item.ToString());
}


tomycat - Sa 11.07.15 22:17

Hammmmmmer !!!
Respekt !!!
Super Forum !!!