Listbox Items

  • #1
W

w1z4rd2003

Mitglied
Themenersteller
Dabei seit
04.05.2006
Beiträge
14
Reaktionspunkte
0
Hallo zusammen

Kann mir jemand helfen??

Ich habe 3 Listboxen.

In der ersten Listbox erstelle ich Items, d.h z.B Gruppe A , Gruppe B usw.
In der dritten Listbox hab ich alle Mannschaften aufgelistet die ich anhand von drag and drop in die zweite Listbox verschieben kann.

Ich möchte jetzt gerne das es folgendermasse funktioniern würde.

Wenn ich Gruppe A anklicke (1.Listbox) kann ich z.B 4 Mannschaften von der 3. in der zweite Listbox verschieben.

Wenn ich danach Gruppe B (1.Listbox) anklicke werden die Items die in der 2. Listbox sind irgendwie gespeichert und die Listbox geleert. Sodass ich in Gruppe B wieder neue Mannschaften einfügen kann. Wenn ich danach auf Gruppe A klicke sind wieder die Items von Gruppe A in der 2.Listbox!

Muss ich das mit Arrays lösen? Die Items immer abspeichern und danach je nach dem welches Items geklickt wird diese wieder in die 2. Listbox füllen??

Ich dachte mir ich erstelle einfach x Listboxen und arbeite mit visible = true; und visible = false; aber irgendwie gefällt mir diese Lösung nicht so

MFG
w1z4rd2003
 
  • #2
Wir sprechen von welcher Programmiersprache ?? ??? ??
 
  • #3
ah ja sorry :) es geht um C#
 
  • #4
aber irgendwie gefällt mir diese Lösung nicht so 

Da trügt Dich Dein Gefühl nicht ... ;).

Muss ich das mit Arrays lösen?

Erstelle doch eine ArrayList (oder in C#2 List). Sobald Du Listbox 1 gefüllt hast, setzt Du in diese äußere Liste (hier->groupList') n Einträge, ein Eintrag für jede Gruppe. Jeder dieser Einträge ist eine (Mannschafts-)Liste.

[Sollten während der Programmausführung Gruppen dynamisch hinzugefügt werden können, musst Du natürlich auch zur Gruppenliste Einträge hinzufügen (darum besser gleich eine ArrayList o.ä. verwenden statt eines einfachen Arrays). Wenn sich die Reihenfolge der Einträge (Gruppen) in ListBox 1 nicht ändern kann, entspricht groupList[0] Gruppe A, groupList[1] Gruppe B usw. Ansonsten kannst Du z.B. gleich ein Hashtable/Dictionary nehmen.]

In->groupList' legst Du weitere Listen ab, die die Mannschaften enthalten, die der jeweiligen Gruppe zugeordnet sind. Falls diese Liste immer den aktuellen Zustand der Listen wiederspiegeln soll, machst Du das nach dem Drag&Drop; ansonsten nur, wenn der Anwender eine andere Gruppe in Listbox 1 auswählt.

// Wenn der Anwender eine andere Gruppe selektiert, ist->groupIdx' hier der alte selektierte Index
private void SaveGroup(int groupIdx, ListBox manschLB) {
  // groupList[groupIdx] leeren, dann in groupList[groupIdx] in einer Schleife die Mannschaften
  // eintragen, die in ListBox 2 (manschLB) stehen.
}

Über eine weitere Methode kehrst Du das Ganze mehr oder weniger um: Du leerst Listbox 2 und trägst die Mannschaften, die in der entsprechenden Mannschaftsliste stehen (Gruppe A: groupList[0], Gruppe B: groupList[1], ...) dort ein.

//->groupIdx' = neuer selektierter Index
private void RestoreGroup(int groupIdx, ListBox manschLB) {
  // ListBox 2 (manschLB) leeren und in einer Schleife dort die Mannschaften eintragen, die in der Liste
  // groupList[groupIdx] stehen.
}

Oder so ähnlich.
 
  • #5
hi... danke viel mals für deine Hilfe aber irgendwie komme ich nicht ganz nach was du meinst :'(
 
  • #6
Ok, dann müsstest Du ein paar Fragen beantworten, damit ich Dir ein Beispiel schreiben kann:

1.
Ändert sich der Inhalt von Listbox 1 während der Programmausführung? D.h., kann der Anwender Gruppen hinzufügen/entfernen oder werden sonstwie Gruppen hinzugefügt oder entfernt?

2.
Handelt es sich um C#2 / .NET2 oder um eine ältere Version?
 
  • #7
Schritt 1.

anhand einer combobox wähle ich eine Kategorie aus, in der nebenstehende Listbox werden dann alle Mannschaften aufgelistet. Listbox heisst lstVereine!

Schritt2:
in einer anderen Listbox lstGruppen erstelle ich anhand einer anderen Maske* die Gruppen. das funktioniert auch! Nehmen wir mal an ich erstellt 5 Gruppen (Grupp1 , 2, 3, 4 und 5).

*[Mit Hilfe eines Button wird eine kleine Maske aufgerufen, in dieser Maske gebe ich der name der Gruppe ein und mit OK wird diese Gruppe in die Listbox eingefügt!]

Somit sehe ich folgendes auf mein Bildschirm.
lstGruppen = Gruppe1, Gruppe2, Gruppe3, Gruppe4, Gruppe5
lstVereine = alle Aufgelisteten Mannschaften
lstAusgewählteVereine = leer


Schritt 3.

In lstAusgewählteVereine können die Mannschaften jetzt eingefügt werden mit drag and drop. Aber hier ist eben gerade das problem. Das einfügen selbst bringt mir nichts. Wenn ich GruppeA anklicke und dan 4 mannschaften in lstAusgewähltevereine kopiere sollten diese irgendwie gespeichert werden, sodass wenn ich gruppe b anklicke lstausgewähltevereine leer ist.

Ich benutze .NET Framework SDK v1.1

MFG
 
  • #8
Ich habe hier mal ein Beispiel hochgeladen (Vorsicht, Hi-Tech-Seite! ;)), um das Forum nicht so zuzukleistern und einen Direkt- oder Fummel-Link zu vermeiden.


Im Beispiel wird ein Hashtable verwendet (da ja die Einträge in der Gruppenliste nicht statisch sind). Key: Gruppenname, Value: Mannschaftsliste. Statt Drag&Drop werden einfach Move-Buttons verwendet, damit es übersichtlicher ist. Ich habe es nicht groß ausprobiert; also bitte testen, ob sich kein Fehler eingeschlichen hat. Wenn Du noch Fragen hast, melde Dich einfach.

Du hast natürlich ein Visualisierungsproblem: Man sieht der Gruppe nicht an, ob sie Mannschaften enthält. Man könnte zwar die Anzahl hinter den Gruppennamen setzen, aber dann kannst Du nicht mehr ListBox.FindString... direkt verwenden. Evtl. böte sich ein ListView an; dort könntest Du in einer weiteren Spalte die Anzahl der Vereine eintragen. Eine weitere Alternative wäre eine Baumansicht.

Und nicht vergessen, immer eine Gruppe zu selektieren (und oldGroupListBoxIdx bzw. die von Dir entsprechend verwendete Variable zu setzen, wenn nötig), nachdem Du die Gruppen-Listbox gefüllst hast.

Wenn Du den Anwender Gruppen umbenennen lässt, musst Du dies natürlich beim Hashtable berücksichtigen (z.B. einfach den entsprechenden Eintrag aus dem Hashtable nehmen und sofort mit dem neuen Key (= neuer Gruppenname) wieder einfügen).
 
  • #9
Danke Dings... du bist ein Held ;) Jetzt hab ichs verstanden anhand des Beispiels.... danke nochmals O0
 
Thema:

Listbox Items

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.965
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben