Forum: PC-Programmierung Combobox Probleme/Fragen


von CJ2401 (Gast)


Lesenswert?

Guten Tag Gemeinde,

ich hoffe Ihr könnt mir bei meinem Problem helfen.

Ich programmiere grade in Visual Studio 2013 mit C#.

Ich würde nun gerne eine Combobox erstellen in der drei Werte stehen, in 
der zweiten Combobox stehen dann 2 Werte. Sobald jemand die Kombination 
Wert 1 und Wert 2 gewählt hat soll eine CheckedListBox erscheinen in der 
dann weit über 100 Werte drin stehen.

Hintergrundinfo:

Die Werte in der ersten Combobox sind als Beispiel Automarken, jetzt 
kann jemand in der zweiten Combobox anwählen ob er die Automarke mit 
Benzin- oder Dieselmotor haben will. in der CheckedListBox stehen dann 
die optionalen Zubehörteile.

Wenn man sich jetzt vorstellt das als Automarken Audi, Mercedes und 
Volkswagen gewählt werden können, dann gibt es natürlich auch anderes 
Zubehör.

Wie bekomme ich das jetzt hin das er sich nur die Zubehörartikel für 
Audi zieht wenn Audi ausgewählt wurde, genauso auch mit Mercedes und 
Volkswagen.

Im nächsten Schritt sollen dann die ganzen Auswahlen in einer zweiten 
Form als Textbox übernommen werden.

Ich hoffe Ihr versteht was ich meine.

Ihr könnt mir hier antworten oder auch bei Skype unter CJ240196

Ich freue mich auf eure Antworten.

Mit freundlichem Gruß

Chris

von Karl H. (kbuchegg)


Lesenswert?

CJ2401 schrieb:

>
> Wie bekomme ich das jetzt hin das er sich nur die Zubehörartikel für
> Audi zieht wenn Audi ausgewählt wurde, genauso auch mit Mercedes und
> Volkswagen.

was genau verstehst du unter 'sich zieht'.

Wenn du denkst, dass du der Listbox im Resource Editor bereits die 
Zubehörteile vorgibst und dann irgendwie die Anzeige einschränkst, dann 
hast du dich geschnitten. Das muss zur Laufzeit passieren. Wird in einer 
der beiden Combo-Boxen die Auswahl verändert, dann lässt du dir in 
deinem Programm eine Funktion aufrufen. In dieser Funktion stellst du 
die aktuelle Auswahl in beiden Combo-Boxen fest, kommst dann auf 
irgendeine Art und Weise (zb Auswahl aus Datenbank) mit den jeweils 
gültigen möglichen Zubehörteilen hoch, die du dann fein säuberlich in 
die vorher gelöschte Listbox neu reinschreibst.

> Im nächsten Schritt sollen dann die ganzen Auswahlen in einer zweiten
> Form als Textbox übernommen werden.

Ist egal. Was du mit der Liste der Zubehörteile machst, ist deine Sache. 
Ob du die in einer Listbox anzeigst oder auf eine Datei schreibst, das 
entscheidest du als Programmierer, in dem du das eben entsprechend 
programmierst.

D.h. in deinem Beispiel ist nicht die Listbox das wesentliche, sondern 
die Frage: wie komme ich eigentlich zu meiner Liste von Zubehörteilen. 
Diese Frage hat erst mal nichts mit einer Listbox zu tun, sondern ist 
eine reine Frage der Datenhaltung. Da musst du halt jetzt mal überlegen, 
wie du das gestalten willst:
Welche Automarken gibt es?
Welche Modelle gibt es?
Welche Zubehörteile sind von Automarke und Modell abhängig?

Die unflexibelste Lösung ist es, diese Daten samt ihren Zusammenhängen 
direkt ins Programm einzuprogrammieren.
Die flexibelste Lösung ist es, dafür zb eine Datenbank zu benutzen. D.h. 
die Daten, mit denen dein Programm operiert kommen von extern. Ob das 
jetzt eine ausgewachsene Datenbank ist oder du die sonst irgendwie 
extern beschreibst, hängt nur noch von deinem Können in der 
Programmierung ab.
Davon losgelöst ist aber (oder besser gesagt: sollte es sein) die Frage: 
wie präsentiere ich meinem Benutzer die Daten - das ist eine ganz andere 
Geschichte und die Erfahrung zeigt: wenn man das alles zusehr 
miteinander vermengt, dann kommt da selten etwas gescheites dabei raus.

: Bearbeitet durch User
von Heinz B. (Firma: Privat) (hbrill)


Lesenswert?

Da macht man sich einfach ein Zusatzfeld, egal
jetzt ob Datenbank oder interne ZubehörListe.
In dieses Zusatzfeld schreibst du für jeden
Zubehör-Artikel einen Vermerk, z.B.
A für Audi, V für Volkswagen, M für Mercedes.
Statt Buchstaben kannst du dir auch Zahlen ausdenken.

Je nachdem was in der Combobox ausgewählt wurde,
kannst du schon als Vorselektierung die richtigen
Artikel rausgreifen. Soll heißen : Wenn z.B. Mercedes
in der Combobox gewählt wurde, kannst du alle Artikel,
die ein M im Zusatzfeld haben, schon mal abgreifen.

Das ganze Spielchen kann man auch weiter treiben, indem
man auch noch den Typ entweder im selben Zusatzfeld
oder ein extra Feld abfragt.

V = Volkswagen  G = Golf

Da gibt es viele Möglichkeiten.

von Christoph J. (cj2401)


Lesenswert?

Hallo und Danke euch beiden für die antworten.

Könntest du das bitte für einen laien beschreiben wie das mit der 
Auswahl auf der Code seite ausschaut?

Ich hatte mir das so vorgestellt:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (comboBox1.SelectedItem == "Konica_Minolta" & 
comboBox2.SelectedItem == "SW-Modell")
                checkedListBox1.Visible = true;

        }

        private void checkedListBox1_SelectedIndexChanged(object sender, 
EventArgs e)
        {
            checkedListBox1.Visible = false;
        }

Aber das funktioniert nicht ...

von Heinz B. (Firma: Privat) (hbrill)


Lesenswert?

Christoph Johannsen schrieb:
> private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
>         {
>             if (comboBox1.SelectedItem == "Konica_Minolta" &
> comboBox2.SelectedItem == "SW-Modell")
>                 checkedListBox1.Visible = true;
>
>         }
>
>         private void checkedListBox1_SelectedIndexChanged(object sender,
> EventArgs e)
>         {
>             checkedListBox1.Visible = false;
>         }
>
> Aber das funktioniert nicht ...

Ich kann zwar jetzt kein C#, aber rein programmiertechnisch
würde ich da nicht an Klammern sparen :
Also eher so :
if (comboBox1.SelectedItem == "Konica_Minolta") &
   (comboBox2.SelectedItem == "SW-Modell")
usw.

von Christoph J. (cj2401)


Lesenswert?

Ohne Klammern bleibt die Fehlerbox sauber, sobald ich klammern hinzufüge 
gibt's Probleme ...

Also daran kann es wohl nicht liegen ..

von Heinz B. (Firma: Privat) (hbrill)


Lesenswert?

Kommt denn ein Fehler oder passiert gar nichts ?
Am obigen Code kann man das ja nicht erkennen.
Wenn kein Ergebnis kommt, vermute ich mal, daß
es den Artikel gar nicht gibt, bzw. falsch geschrieben
wurde.

PS: Zu deinem ersten Problem : In Firmen wird sowas
    über Warengruppen geregelt. In deinem Fall mußt
    du nur etwas umdenken.

von Christoph J. (cj2401)


Lesenswert?

Ich steh leider hart auf dem Schlau ...

Ich hab gleich nachdem er die Form erstellt hat gesagt er soll die 
checkedlistbox unsichtbar machen, das funktioniert auch. Aber selbst 
wenn dann beide Werte aus den Comboboxen stimmen zeigt er die 
checkedlistbox nicht wieder an.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.