Laden...

Listbox Selected Item IF Abfrage

Erstellt von chaotium vor 2 Jahren Letzter Beitrag vor 2 Jahren 569 Views
C
chaotium Themenstarter:in
3 Beiträge seit 2022
vor 2 Jahren
Listbox Selected Item IF Abfrage

Guten Morgen zusammen

Und zwar bin Ich von VB zu C# gewechselt. Eigentlich hat alles geklappt bis auf die Listbox.

In mein alten Projekt hatte ich eine If Else abfrage, wenn Ich z.B. Hallo gewählt hab, dann hat sich ein neue Form geöffnet. Wenn ich dann z.b. Exit gewählt habe, öffnet sich wieder eine andere Form. Nun das klappt aber nicht in C#.
Unten steht der Code.


            Form9999 form9999 = new Form9999();
            if (ListBox1.SelectedItem == Hallo)
            {
                form9999.Show();
            }
            else
            if (ListBox1.SelectedItem == Exit)
            {
                form9999.Show();
            }
            else

Wenn Ich den Code ausführe, dann öffnet sich die neue Form, egal ob Ich Hallo oder Exit wähle. Jemand eine Idee?

Mit freundlichen Grüßen
chaos

2.079 Beiträge seit 2012
vor 2 Jahren

Dann lies doch mal den Inhalt von beiden Ifs ...

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.

4.939 Beiträge seit 2008
vor 2 Jahren

Hallo und willkommen,

bisher zeigst du aber auch in beiden Fällen dieselbe Form form9999 an...
Wie sind denn Hallo und Exit definiert (und wie hast du die ListBox gefüllt)?
Oder möchtest du direkt die Texte abfragen?


if (ListBox1.SelectedItem == "Hallo")

C
chaotium Themenstarter:in
3 Beiträge seit 2022
vor 2 Jahren

Ups Copy Past Fehler.
Beim Hallo soll die Form9999 öffnen

Beim Exit die Form9998 öffnen.

Mein Ziel ist eigentlich. Benutzer selektiert in der Listbox ein Inhalt und dann öffnet sich dementsprechend eine Form.

Hier der alte VB Code:

    If ListBox1.SelectedItem = "Leipzig Dessau" Then  
        Form11.Show()  
    Else  

    End If  
    If ListBox1.SelectedItem = "Hagen Finnentrop" Then  
        Form12.Show()  
    Else  

    End If  
    If ListBox1.SelectedItem = "Aschaffenburg Gemünden" Then  
        Form13.Show()  
    Else  

    End If  
    If ListBox1.SelectedItem = "Wuppertal Hagen" Then  
        Form14.Show()  
    Else  

    End If  
    If ListBox1.SelectedItem = "Duisburg Bochum" Then  
        Form15.Show()  
    Else  

    End If  
    If ListBox1.SelectedItem = "Köln Aachen" Then  
        Form16.Show()  
    Else  

    End If  
    If ListBox1.SelectedItem = "München Augsburg" Then  
        Form17.Show()  
    Else  

    End If  
    If ListBox1.SelectedItem = "Hamburg Lübeck" Then  
        Form18.Show()  
    Else  

    End If  
    If ListBox1.SelectedItem = "Dresden Riesa" Then  
        Form19.Show()  
    Else  

    End If  
    If ListBox1.SelectedItem = "Dresden Chemnitz " Then  
        Form20.Show()  
    Else  

    End If
4.939 Beiträge seit 2008
vor 2 Jahren

Unterscheiden sich die Forms denn so stark voneinander (d.h. komplett anderes Design) oder brauchst du eigentlich nur eine Form und tauschst nur den Inhalt (Texte, Bilder, ...) aus?

C
chaotium Themenstarter:in
3 Beiträge seit 2022
vor 2 Jahren

Eigentlich bleibt das Design gleich. Es ändern sich Bilder / Texte und bissel das Design.

4.939 Beiträge seit 2008
vor 2 Jahren

Dann brauchst du doch nur eine Form und fügst passende Eigenschaften (z.B Name, Image bzw. ImagePath) hinzu.
Und die Daten legst du dann in einem Array (oder List<>) ab, z.B.


record CityData(string Name, string ImageName1, string ImageName2); // record ab C#9 (VS 2019) nutzbar, ansonsten eine eigene Klasse

static readonly CityData[] Cities = new CityData()
{
	new("Leipzig Dessau", "Leipzig", "Dessau"),
	new("Hagen Finnentrop", "Hagen", "Finnentrop"),
	new("Aschaffenburg Gemünden", "Aschaffenburg", "Gemünden"),
	// ...
};

Und beim ListBox-Ereignis dann in etwa:


var cityData = Cities.FirstOrDefault(c => c.Name == ListBox1.SelectedItem); // using System.Linq; oberhalb hinzufügen
if (cityData != null)
{
  const string ImagesPath = "Images"; // Pfad für die externen Bilder (alternativ als Ressourcen einbinden)
  CityForm form = new CityForm()
  {
      Name = cityData.Name;
      ImagePath1 = Path.Combine(ImagesPath, cityData.ImageName1);
      ImagePath2 = Path.Combine(ImagesPath, cityData.ImageName2);
  };

  form.Show(this);
}

Und im Setter von ImagesName1/2 lädst du dann das Bild z.B. mittels pictureBoxX.Image = new Bitmap(value);.

PS: Und die ListBox (DataSource) dann auch am besten anhand von Cities.Name füllen.