Mithilfe ComboBox Auswahl umspringen [C#]

endgame

PC-Selbstbauer(in)
Hallo,

bin z.Z. eine kleine Anwendung in C# am schreiben.
Ich habe unterschiedliche Auswahlmöglichkeiten, welche ich mithilfe der ComboBox umspringen lassen möchte.
Ein kleinen "Bauplan" hab ich, im Angang ,mit Paint erstellt.

Wie kann ich dies am besten realisieren?

lg
 

Anhänge

  • bauplan c#.png
    bauplan c#.png
    10,9 KB · Aufrufe: 95
2 Möglichkeiten:
a) die Auswahlmöglichkeiten gleich lassen und nur die Beschriftung bei selectedindexchanged von der combobox ändern.
B) die Auswahlmöglichkeiten alle anlegen und je nach selectedindex verstecken oder zeigen (.show()/.hide())
 
Du möchstest, dass sich der Inhalt im unteren Bereich ändert, wenn du in der ComboBox darüber etwas auswählst. Habe ich das so richtig verstanden?
Interessant zu wissen wäre auch, ob du WinForms oder WPF verwendest. Wobei ich von WinForms dringend abraten würde.

Die beiden Vorschläge meines Vorposters kann ich ürbigens nicht gutheißen.
 
Ich hab nicht besonders viel Ahnung von der C# std. API. Aber ich würde es ungefährt so machen:

Du hast in deiner Combobox verschiedene Objekte, im besten Fall natürlich Strings.

Die Strings verknüpfst du mittels einer Map (z.B HashMap) mit Objekten die du im unteren Bereich anzeigen möchtest. Die Strings aus der Combobox sind sozusagen deine Schlüssel.

Du registrierst nun ein Event das auf einer Änderung der Combobox hört

Bei Änderungen nimmst du den Text der momentanen Auswahl, suchst in der Map nach der Value und zeigst Sie unten an.

Allerdings ist deine Beschreibung mehr als Vage und ich weiß nicht so ganz was du eigentlich willst.
 
im besten Fall natürlich Strings.
Darf man fragen, warum?

Was den Rest deines Beitrags angeht, das lässt sich in WPF deutlich simpler und eleganter ber Bindings lösen. Falls gewünscht, kann ich dazu auch gerne mal ein kleines Beispielprojekt erstellen.

Allerdings ist deine Beschreibung mehr als Vage und ich weiß nicht so ganz was du eigentlich willst.
Da muss ich mich leider anschließen.
 
Du möchstest, dass sich der Inhalt im unteren Bereich ändert, wenn du in der ComboBox darüber etwas auswählst. Habe ich das so richtig verstanden?
Interessant zu wissen wäre auch, ob du WinForms oder WPF verwendest. Wobei ich von WinForms dringend abraten würde.

Die beiden Vorschläge meines Vorposters kann ich ürbigens nicht gutheißen.

Ja du hast es richtig verstanden.

Ehm, WinForms oder WPF ?!
ich nutze MS Visual C# 2010 Express Edition.
Weiß nicht was das da ist.

Wieso kannst du diese nicht gutheißen ?
Hast du eine Alternative?

Ich hab nicht besonders viel Ahnung von der C# std. API. Aber ich würde es ungefährt so machen:

Du hast in deiner Combobox verschiedene Objekte, im besten Fall natürlich Strings.

Die Strings verknüpfst du mittels einer Map (z.B HashMap) mit Objekten die du im unteren Bereich anzeigen möchtest. Die Strings aus der Combobox sind sozusagen deine Schlüssel.

Du registrierst nun ein Event das auf einer Änderung der Combobox hört

Bei Änderungen nimmst du den Text der momentanen Auswahl, suchst in der Map nach der Value und zeigst Sie unten an.

Allerdings ist deine Beschreibung mehr als Vage und ich weiß nicht so ganz was du eigentlich willst.

Ebenfalls habe ich das Problem bei dir was du da schreibst. So weit bin ich anscheinend in C# wohl noch nicht. D:
Z.B. von HashMap habe ich noch nie was gehört.

Darf man fragen, warum?

Was den Rest deines Beitrags angeht, das lässt sich in WPF deutlich simpler und eleganter ber Bindings lösen. Falls gewünscht, kann ich dazu auch gerne mal ein kleines Beispielprojekt erstellen.


Da muss ich mich leider anschließen.

die Beispiel Projekte hören sich ganz gut an, damit ich mal sehen kann wie sowas funktioniert & anhand dem Code das lerne.



lg
 
Ehm, WinForms oder WPF ?!
ich nutze MS Visual C# 2010 Express Edition.
Visual Studio ist die verwendete IDE, C# die Programmiersprache und WinForms/WPF sind Technologien zur Gestaltung von grafischen Oberflächen. Wobei WinForms eben deutlich älter und nicht mehr zu empfehlen ist.

Wieso kannst du diese nicht gutheißen ?
Hast du eine Alternative?
Weil es eine deutlich elegantere und flexiblere Lösung dafür gibt. (siehe unten)

die Beispiel Projekte hören sich ganz gut an, damit ich mal sehen kann wie sowas funktioniert & anhand dem Code das lerne.

Anhang anzeigen ComboBoxExample.zip
 
Visual Studio ist die verwendete IDE, C# die Programmiersprache und WinForms/WPF sind Technologien zur Gestaltung von grafischen Oberflächen. Wobei WinForms eben deutlich älter und nicht mehr zu empfehlen ist.


Weil es eine deutlich elegantere und flexiblere Lösung dafür gibt. (siehe unten)



Anhang anzeigen 763812

Erstmal danke !
Hatte imr dann mal die ZIP geladen.
Nur irgendwie sieht das ganz anders als als bei mir ..
Ich weiß z.B. garnicht wie ich das im Designer bearbeiten muss, da ich den designer über deine Datei nicht öffnen kann.
Zudem erkennt mein C# manche Befehle gar nicht ?

Lg
 
Du kannst es ja mal mit der 2013er Version von VS versuchen: Download Overview

Ich weiß leider nicht inwiefern VS-2013-Projekte abwärtskompatiblel zu VS 2010 sind. Zumindest benötigst du aber das .NET Framework 4.5 für das Projekt. Hatte leider beim Erstellen des Beispiels nicht bedacht, dass du noch eine so alte Version verwendest.

Aus reiner Neugierde, was für eine Anwendung entwickelst du?
 
Zuletzt bearbeitet:
Du kannst es ja mal mit der 2013er Version von VS versuchen: Download Overview

Ich weiß leider nicht inwiefern VS-2013-Projekte abwärtskompatiblel zu VS 2010 sind. Zumindest benötigst du aber das .NET Framework 4.5 für das Projekt. Hatte leider beim Erstellen des Beispiels nicht bedacht, dass du noch eine so alte Version verwendest.

Aus reiner Neugierde, was für eine Anwendung entwickelst du?

.. uuuuuuuuuuund zwar: ich und ein paar Kumpels zocken seit neuem "Space Engineers" dort man man rum bauen, ähnlich wie in MC, muss man dort Ressourcen sammeln und Komponenten bauen, welche dann zu dem finalen Produkt werden. Und genau dafür bin ich einen Rechner am bauen.
Dies klappt leider nur so zu 3/4. :P
 
Also im Anhang findest du ein Bild.
Der blaue Kasten ist, so wie du siehst, die ComboBox.
Mit dieser möchte ich zwischen 3 Kategorien auswählen: großes Schiff, kleines Schiff, Station (dort kosten die Blöcke unterschiedlich viel).
Die NumericUpDown Elemente + die Label die dazu gehören sollen sich dann ändern zu der anderen Kategorie.
Es sind teils weniger oder auch mehr.
im dem grünen Kästchen sollen sich dann die Ergebnisse je nach obiriger eingabe addieren.

werde dies gleich mal mit VB '13 testen.

lg
 

Anhänge

  • erklärung projekt space engineerer.png
    erklärung projekt space engineerer.png
    24,1 KB · Aufrufe: 54
Was ich dir noch dringend ans Herz legen würde, ist das MVVM-Pattern. Das in Kombination mit WPF macht wirklich Freude.
 
Leider kann ich damit nichts anfangen.
in deinem Vorschlag hast du ja auch irgendwie einen Designer verwendet, den ich noch garnicht kenne.
Bisher habe ich halt nur mit Windows Forms gearbeitet.

lg
 
Das war schon klar. Deshalb habe ich dich ja darauf hingewiesen. Mag anfangs lästig sein, sich in eine neue Technologie einzuarbeiten, wenn man es doch eigentlich auch mit altbekannten Mitteln lösen könnte, aber langfristig gesehen hast du mehr davon.

Ich hoffe, das Beispiel vermittelt einen kleinen Eindruck davon, wie angenehm das Arbeiten mit Bindings sein kann. In dem simplen Beispiel hätte man natürlich auch einfach Strings anstelle der Option-Objekte verwenden können. Ich wollte damit nur deutlich machen, dass man dabei nicht auf Strings beschränkt ist.
 
Das war schon klar. Deshalb habe ich dich ja darauf hingewiesen. Mag anfangs lästig sein, sich in eine neue Technologie einzuarbeiten, wenn man es doch eigentlich auch mit altbekannten Mitteln lösen könnte, aber langfristig gesehen hast du mehr davon.

Ich hoffe, das Beispiel vermittelt einen kleinen Eindruck davon, wie angenehm das Arbeiten mit Bindings sein kann. In dem simplen Beispiel hätte man natürlich auch einfach Strings anstelle der Option-Objekte verwenden können. Ich wollte damit nur deutlich machen, dass man dabei nicht auf Strings beschränkt ist.

gut - dann werde ich mich damit mal mehr auseinandersetzen. Ein dickes danke an dich! :)
Wenn ich fragen habe, melde ich mich dann mal per PN bei dir, ok ?
LG
 
Bei so ner einfachen anwendung würde auch windows forms reichen imho. Es lohnt sich meiner meinung nach nicht extra ein neues framework zu lernen und das gui neuzubasteln, das kann man für ein späteres projekt im hinterkopf behalten. Wenn die preise nur unterschiedlich sind, reicht es dann nicht die optionen gleich zu lassen und nur den preis zu ändern, der berechnet wird?
 
Vorausgesetzt, es handelt sich hierbei nicht um die letzte Anwndung, die er mit C# entwickelt, wäre es einfach eine Investition in die Zukuft. Falls seine GUI nur oder zumindest zu einem großen Teil aus dem im Screenshot gezeigten Bereich besteht, wäre auch eine Neuerstellung dieser mit WPF kein großer Aufwand. Und selbst wenn er bei WinForms bliebe, wären deine Vorschläge Grütze. Das sind Frickellösungen, wie sie gerne von Hobbyprogrammierern eingesetzt werden, die erst mal nach wenig Arbeit aussehen, aber mit denen man sich langfristig nur selbst Probleme schafft.

So weit ich das verstanden habe, ändert sich je nach Kategorie nicht nur der Preis sondern auch die Verfügbarkeit der verschiedenen Blöcke.
 
Zuletzt bearbeitet:
Es geht doch hier um hobbyprogrammiererei. Ist ja toll das du ne möglichkeit kennst die deiner meinung nach besser ist, aber damit verdirbst du ihm evt. Nur den spass am programmieren wenn er sich in drölftausend neue sachen reinarbeiten soll. Ich hab versucht möglichkeiten zu nennen die verständlich sind und mit vorhandenem wissen erreicht werden können. Man könnte jetzt ja auch zb. damit anfangen das windows forms und wpf schlecht sind und er sich besser ein anständiges framework runterladen soll, zB. Qt um mal eins zu nennen. Aber das ist doch blödsinn. Als ob es für die anwendung einen unterschied macht wie es genau programmiert ist.
 
Zurück