Entwickler-Ecke

WinForms - Listbox in Label ausgeben


Shadow73 - Do 06.06.19 21:27
Titel: Listbox in Label ausgeben
Hallo zusammen,

ich habe folgendes in den Windows Forms erstellt:

• Links eine Listbox mit vielen Titeln
• In der Mitte ein Label für die Produktbeschreibung
• Rechts eine Imagebox für das Produktbild
• Rechts Mitte ein Label für Zusatzinformationen
• Rechts unten den Preis

Wenn ich nun meine Listbox befüllt habe, was ich über die Items im Eigenschaftsfenster gemacht habe, möchte ich gerne, wenn ich einen Titel in meiner Listbox markiere, die Beschreibung dazu in meinem Label in der Mitte angezeigt bekommen.

Wenn ich den ersten Eintrag in meiner Listbox markiere, dann klappt das so einigermaßen. Die Beschreibung wird angezeigt, allerdings wird mir auch am Ende des Textes noch der Name ausgegeben, was ich eigentlich nicht wollte.

Wie bekomme ich das hin, dass wenn ich einen anderen Eintrag in meiner Listbox markiere, dieser Beschreibungstext angezeigt wird?

LG


Th69 - Fr 07.06.19 08:16

Hallo und willkommen,

dafür gibt es das SelectedIndexChanged [https://docs.microsoft.com/de-de/dotnet/api/system.windows.forms.listbox.selectedindexchanged?view=netframework-4.8]-Ereignis.

Wie zeigst du denn bisher die Beschreibung an (welches noch fälschlicherweise den Namen ausgibt)?


Shadow73 - Fr 07.06.19 11:19

Guten Morgen,

so wie ich das hier im Label hinterlegt habe, wird mir der Produkttext ausgegeben. Ich gehe aber davon aus, dass das falsch ist. Habe gerade erst angefangen mich mit C# zu befassen.

C#-Quelltext
1:
2:
3:
4:
5:
private void ListBoxArtikel_SelectedIndexChanged(object sender, EventArgs e)
{
    string artikel = listBoxArtikel.SelectedItems.ToString();
    lblProdukttext.Text = "Text" + listBoxArtikel.SelectedItem;
}


Ich habe im Internet schon alles abgesucht und auch in meinen Büchern steht darüber nichts. Vielleicht such ich auch einfach falsch?!

LG

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


erfahrener Neuling - Fr 07.06.19 11:39

Moin,

also wenn ich das richtig verstanden habe, willst du immer nur ein Item (Artikelname) auswählen und dessen Beschreibung im Label anzeigen.
Da würde ich nicht SelectedItems benutzen (impliziert ja schon evtl. mehrzahl), sondern konkret das ausgewählte Item abrufen.

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
private void ListBoxArtikel_SelectedIndexChanged(object sender, EventArgs e) 
{
    // ausgewählten Artikel ermitteln
    int index = this.listBoxArtikel.SelectedIndex;
    if (index != -1)
    {
        string artikelName = this.listBoxArtikel.Items[index].ToString();
        // Beschreibung setzen
        this.lblProdukttext.Text = deineDatenquelle.GetArtikelBeschreibung(artikelName);   // nur als Bsp., wo auch immer du deine Artikel-Beschreibungen herkriegst
    }
}


Ansonsten:
Zitat:
allerdings wird mir auch am Ende des Textes noch der Name ausgegeben, was ich eigentlich nicht wollte

dann solltest du es dem Programm auch sagen, dass du das nicht willst :D
Zitat:

C#-Quelltext
1:
lblProdukttext.Text = "Text" + listBoxArtikel.SelectedItem;                    


Gruß
Julian

Moderiert von user profile iconTh69: Doppelposting entfernt (und Änderung hier übernommen).


Shadow73 - Fr 07.06.19 12:06

Hallo Julian,

hm das ist ja schon wieder was völlig anderes als was ich mir da "zusammengestrickt" habe.

Ist es nicht möglich, die Produkttexte zusammen mit dem markierten Item zu hinterlegen?

So in der Art:

C#-Quelltext
1:
2:
Artikel[0] = "Produkttext";
Artikel[1] = "Produkttext2";


LG
Nils

Moderiert von user profile iconTh69: C#-Tags hinzugefügt


Th69 - Fr 07.06.19 12:43

Doch, möglich ist alles. Hast du es denn mal ausprobiert?


erfahrener Neuling - Fr 07.06.19 12:51

user profile iconShadow73 hat folgendes geschrieben Zum zitierten Posting springen:
Ist es nicht möglich, die Produkttexte zusammen mit dem markierten Item zu hinterlegen?

Guck dir mal die Klasse Dictionary [https://docs.microsoft.com/de-de/dotnet/api/system.collections.generic.dictionary-2?view=netframework-4.8] an. Dort kannst Werte (Produkttexte) mit Schlüsseln (z. B. Artikelname) verknüpft speichern