Combobox Probleme/Fragen

Gast #3684032
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
#3684109
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.
(Firma: Privat) #3684127
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.
#3684148
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 ...
(Firma: Privat) #3684161
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.
(Firma: Privat) #3684184
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren