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
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.
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")
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
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?
Eigentlich bleibt das Design gleich. Es ändern sich Bilder / Texte und bissel das Design.
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.