Laden...

Listbox - Reihenfolge ändern

Erstellt von macke_a vor 15 Jahren Letzter Beitrag vor 15 Jahren 5.554 Views
M
macke_a Themenstarter:in
291 Beiträge seit 2007
vor 15 Jahren
Listbox - Reihenfolge ändern

Hallo !
Ich habe eine Listbox mit 21 Einträgen von denen nur 5 sichtbar sind.

Jetzt möchte ich die Reihenfolge in der Listbox ändern können um auch die nicht sichtbaren Einträge anzuzeigen.

Neben meiner Listbox befinden sich zwei Buttons, Up & Down die ich zum auswählen nutzen will.

Für die Programmierung suche ich jetzt eine gute Lösung wie ich am besten die Reihenfolge der Einträge verändern kann.

Dazu ein kleines Beispiel:
Ich habe Eintrag 0 - 4 sichtbar. Jetzt betätigt jemand den Up-Button, d.h. Eintrag 20,0,1,2 und 3 müssen angezeigt werden.

Sollte jemand den Down Button dreimal betätigen, so musste im aktuellen Beispiel die Einträge 1,2,3,4 und 5 angezeigt werden.

Kann mir jemand auf die Sprünge helfen, wie ich mein kleines Programm aufbauen soll? Wie würdet Ihr das lösen?

Besten Dank im Voraus!

Gruss macke_a

5.299 Beiträge seit 2008
vor 15 Jahren

Normalerweise tätichja denken, sollerdoch scrollen, aber du willst wohl son Endlos-Rund-Scroll-Dings haben, was?

Dafür kommen die Methoden System.Windows.Forms.ListBox.ObjectCollection.Insert() und RemoveAt() in Frage

Also sowas wie


Obj Itm=LB[LB.Count-1];
LB.Items.RemoveAt(LB.Count-1);
LB.Items.Insert(0, Itm);

(fügt das letzte Item an den Anfang an (so Gott will).)

Der frühe Apfel fängt den Wurm.

M
macke_a Themenstarter:in
291 Beiträge seit 2007
vor 15 Jahren

Hallo ErfinderDesRades,
ja ich will eine Endlos-Rund-Scroll-Schleife für meine Listbox haben..!

Ich versuche den Teil von Dir in mein Programm einzupflegen. Eventuell melde ich mich später noch einmal...

Gruss macke_a

M
macke_a Themenstarter:in
291 Beiträge seit 2007
vor 15 Jahren

Hallo !

Ich habe noch ein weiteres Problem mit meiner Listbox, da bei mir die SelectedItem Eigenschaft bei der Listbox nicht vorhanden ist. Ich nutzte das CompactFramework 2.0 / VisualStudo 2005 mit seinen vorhanden Bibliotheken, doch dort fehlt diese Eigenschaft.

 
 int i = ListBox.SelectedIndex;

 object obj = ListBox.SelectedItem; 

 ListBox.Items.RemoveAt(i);
 ListBox.Items.Insert(i, obj); 

Hat jemand einen Vorschlag wie ich diese Eigenschaft für meine Listbox bekommen kann?
Laut MSDN ist der folgende Namespace relevant, denn ich natürlich mit eingebunden habe, aber er die "SelectedItem" Eigenschaft nicht beinhaltet!

Namespace: System.Windows.Forms
Assembly: System.Windows.Forms (in system.windows.forms.dll)

Kann mir jemand weiterhelfen, wie ich mein Problem lösen kann ?

Gruss macke_a

5.299 Beiträge seit 2008
vor 15 Jahren

Listbox.SelectedItem ist wohl identisch mit Listbox.Items[Listbox.SelectedIndex]

Der frühe Apfel fängt den Wurm.

M
macke_a Themenstarter:in
291 Beiträge seit 2007
vor 15 Jahren

Hallo !

Die Idee hatte ich auch schon, danke für den Hinweis!

    

private void ListBoxUp_MouseUp(object sender, MouseEventArgs e)
{        
   int i = ListBoxEb3.SelectedIndex;

   Object obj = ListBoxEb3.Items[ListBoxEb3.SelectedIndex]; 
   ListBoxEb3.Items.RemoveAt(i);
   ListBoxEb3.Items.Insert(i, obj);
} 

Allerdings erhalte ich dann immer noch die folgende Fehlermeldung:

Fehler CS1502: Die beste Übereinstimmung für die überladene OpenNETCF.Windows.Forms.ListBox2.ItemCollection.Insert(int, OpenNETCF.Windows.Forms.ListItem)-Methode hat einige ungültige Argumente.

Fehler CS1503: 2-Argument: kann nicht von "object" in "OpenNETCF.Windows.Forms.ListItem" konvertiert werden.

Was nun ?

5.299 Beiträge seit 2008
vor 15 Jahren

Den Fehler beheben. Der Meldung ist eigentlich nichts hinzuzufügen.

Wennde dir die Methode genau anguckst, sollteste drauf kommen.

Der frühe Apfel fängt den Wurm.

M
macke_a Themenstarter:in
291 Beiträge seit 2007
vor 15 Jahren

Ja gut...der relevate Fehler ist wie folgt beschreiben:

Fehler CS1503: 2-Argument: kann nicht von "object" in "OpenNETCF.Windows.Forms.ListItem" konvertiert werden.

Nur ListItem steht mir auch nicht zur Verfügung, wie soll ich da denn eine Lösung finden ?
Oder seh ich mittlerweile den Wald vor lauter Bäume nicht mehr ???

49.485 Beiträge seit 2005
vor 15 Jahren
M
macke_a Themenstarter:in
291 Beiträge seit 2007
vor 15 Jahren

Hallo !
Ich habe versucht den Fehler zu lokalisieren., leider ohne nennenswerten Erfolg. Auch durch weiter Recherchen komme ich zu keinem Ergebnis. Wie beschrieben sieht mein aktueller Quelltext so aus.


private void ListBoxUp_MouseUp(object sender, MouseEventArgs e)
{           
            int i = ListBoxEb3.SelectedIndex;

            object obj = ListBoxEb3.Items[ListBoxEb3.SelectedIndex]; 

            ListBoxEb3.Items.RemoveAt(i);
            ListBoxEb3.Items.Insert(i, obj);
            ListBoxEb3.SelectedIndex = i;
}

Die Fehlermeldung ist bereits von mir beschrieben worden. Sollte jemand von Euch, den Fehler unmittelbar sehen, so wäre ich für ein kurzes Feedback dankbar!

Gruss macke_a ... und besten Dank !

5.299 Beiträge seit 2008
vor 15 Jahren

Ich habe versucht den Fehler zu lokalisieren., leider ohne nennenswerten Erfolg. Ja, wie - du weißt nichtmal die Fehler-Zeile?, weißt nicht, bei welchem Aufruf der Fehler auftritt?

(Und in deinem Code entfernst du das Item am SelectedIndex, und fügst es an gleicher Stelle wieder ein)

Der frühe Apfel fängt den Wurm.

M
macke_a Themenstarter:in
291 Beiträge seit 2007
vor 15 Jahren

Natürlich kann ich Dir sagen wo der Fehler auftritt...und zwar in dieser Zeile

ListBoxEb3.Items.Insert(i, obj);

Der Sinn der Funktion ist auch erstmal zweitrangig....

1.378 Beiträge seit 2006
vor 15 Jahren

Ich rate und probiere einfach mal:


int i = ListBoxEb3.SelectedIndex;
OpenNETCF.Windows.Forms.ListItem item = ListBoxEb3.Items[i];

ListBoxEb3.Items.RemoveAt(i);
ListBoxEb3.Items.Insert(i, item);
ListBoxEb3.SelectedIndex = i;

Lg XXX

EDIT: Das du keine System.Window.Forms.ListBox verwendest hättest du ruhig früher dazu schreiben können. 🙂

5.299 Beiträge seit 2008
vor 15 Jahren

@macke_a:

Wie lauten die Signaturen der in Fragen kommenden Überladungen des fehlerhaften Aufrufes?

(Zu "Signatur" guggedu Doku)

Der frühe Apfel fängt den Wurm.

M
macke_a Themenstarter:in
291 Beiträge seit 2007
vor 15 Jahren

PROBLEM GELÖST !!

Der Quelltext von xxxprod hat den gewünschten Erfolg für meine Programmierung gebracht. Ich muss jetzt nur noch die Funktionen, die ich eben als zweitrangig angegeben habe, verbessern.

Danke für Eure Beiträge!!

Gruss macke_a

5.299 Beiträge seit 2008
vor 15 Jahren

Ja, schade.
Das hat dich um die Möglichkeit gebracht, zu lernen, wie mans selbst löst.

Der frühe Apfel fängt den Wurm.

M
macke_a Themenstarter:in
291 Beiträge seit 2007
vor 15 Jahren

Hallo Erfinder des Rades!

Gerne produziere ich den Fehler erneut um mir die Möglichkeiten zu schaffen, die Fehler in Zukunft selber zu beheben!

Ich bin quasi den ganzen Tag "online" von daher können wir beide später noch einmal über das Problem diskutieren...

Gruss macke_a