# Mithilfe ComboBox Auswahl umspringen [C#]



## endgame (23. August 2014)

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


----------



## Icephoen1x (23. August 2014)

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())


----------



## Rho (23. August 2014)

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.


----------



## XPrototypeX (23. August 2014)

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.


----------



## Rho (23. August 2014)

XPrototypeX schrieb:


> 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.



XPrototypeX schrieb:


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


Da muss ich mich leider anschließen.


----------



## endgame (23. August 2014)

Rho schrieb:


> 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?



XPrototypeX schrieb:


> 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.
> 
> ...



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.



Rho schrieb:


> 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.
> 
> ...


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



lg


----------



## Rho (24. August 2014)

endgame schrieb:


> 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.



endgame schrieb:


> 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)



endgame schrieb:


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






			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.


----------



## endgame (24. August 2014)

Rho schrieb:


> 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)
> ...



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


----------



## Rho (24. August 2014)

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?


----------



## endgame (24. August 2014)

Rho schrieb:


> 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.


----------



## Rho (24. August 2014)

Und woraus besteht das fehlende Viertel?

*Update:*

Hier ist ein Beispiel, das zu VS2010 kompatibel ist: 


			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.


----------



## endgame (24. August 2014)

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


----------



## Rho (24. August 2014)

Was ich dir noch dringend ans Herz legen würde, ist das MVVM-Pattern. Das in Kombination mit WPF macht wirklich Freude.


----------



## endgame (24. August 2014)

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


----------



## Rho (24. August 2014)

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.


----------



## endgame (24. August 2014)

Rho schrieb:


> 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


----------



## Rho (24. August 2014)

Ja, oder du stellst sie einfach hier im Thread.


----------



## Icephoen1x (24. August 2014)

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?


----------



## Rho (24. August 2014)

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.


----------



## Icephoen1x (24. August 2014)

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.


----------



## Rho (24. August 2014)

Nur weil man etwas als Hobby betreibt, muss man sich aber nicht mit kurzssichtigen und undurchdachten (scheinbaren) Lösungen selbst das Leben schwer machen. Wie gesagt, selbst, wenn er bei WinForms bleiben sollte, wären deine Vorschläge einfach nicht zielführend.

Interessant. Wenn du schon so einen unsinnigen Vergleich anführst, kannst du ja vielleicht auch noch kurz begründen, wieso man für eine .NET-Anwendung besser Qt anstelle von WPF verwenden sollte. Auf die Erklärung bin ich wirklich gespannt.


----------



## Icephoen1x (24. August 2014)

.Net ist nichtmal standardmäßig in der neuesten Windows version drauf, man muss es erst installieren. Dabei genügt es nicht nur den benötigten teil des frameworks zu installieren, man muss es komplett installieren (was auch ein grund dafür ist lieber die alten versionen zu nehmen und auf die neuen features zu verzichten, das alte ist vorinstalliert). Bei Qt reicht es hingegen nur die benötigten dlls mitzuliefern. Ausserdem ist das .net framework nur auf windows systemen lauffähig, auf anderen Plattformen muss getrickst werden. Qt ist cross platform. Ich finde auch die css ähnliche gui programmierung bei qt persönlich sehr sinnvoll, so ist es einfach möglich das design effektiv von der funktion des programms zu trennen (keine ahnung wie das in wpf gelöst ist, hab ewig nicht mehr c# genutzt). 

Und nochmal. Ich wollte eine einfache lösung nennen die man durchaus bei kleineren programmen so machen kann.
Ist aber auch egal. Es führen viele wege nach rom und äußerlich wird man dem programm ohnehin nicht anmerken auf welche art jetzt die optionen ausgeblendet werden. Der threadersteller kann sich ja gerne eine aussuchen.


----------



## Rho (24. August 2014)

**seufz**

Lebst du zufällig in einem Paralleluniversum oder fantasierst du dir deine "Fakten" einfach zusammen?


----------



## Rho (25. August 2014)

Hatte heute Abend ein wenig Zeit, um ein etwas umfangreicheres Beispielprojekt zu erstellen. Das sollte zumindest einen ungefähren Eindruck vermitteln, wie eine Lösung mittels WPF aussehen könnte.




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Projekt: 


			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Kompiliertes Assembly: 


			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.


----------

