Bonjour,
tout est dans le sujet, j'ai deux boutons un monter, un descendre je voudrais descendre ou monter le contenu de l'item selectionné...
merci !
Bonjour,
tout est dans le sujet, j'ai deux boutons un monter, un descendre je voudrais descendre ou monter le contenu de l'item selectionné...
merci !
Après quelques essais, j'ai ceci qui fonctionne :
Y-a mieux ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 private void buttonDescendre_Click(object sender, EventArgs e) { if (listBox1.SelectedIndex < listBox1.Items.Count-1) { int vIndex = listBox1.SelectedIndex; object vTemp = listBox1.SelectedItem; listBox1.Items.RemoveAt(vIndex); listBox1.Items.Insert(vIndex + 1, vTemp); listBox1.SelectedIndex = vIndex + 1; } } private void buttonMonter_Click(object sender, EventArgs e) { if (listBox1.SelectedIndex > 0) { int vIndex = listBox1.SelectedIndex; object vTemp = listBox1.SelectedItem; listBox1.Items.RemoveAt(vIndex); listBox1.Items.Insert(vIndex - 1, vTemp); listBox1.SelectedIndex = vIndex - 1; } }
Car je n'ai pas trouvé de methode dans le genre Exchange dans la classe collection... c dommage..
"Si vous voulez être l’esclave des banques et payer pour financer votre propre esclavage, alors laissez les banquiers créer la monnaie" - Josiah Stamp, 1920, Gouverneur de la Banque d’Angleterre
"Qui ne peut acheter ruine qui voudrait vendre" - Jacques Duboin.
"Nous n'héritons pas la terre de nos parents, nous l'empruntons à nos enfants." - Antoine de Saint Exupéry
salut,
ça fonctionne très bien ! en effet moi aussi je cherchais à utiliser exchange ...
en fait je viens de penser à ça : les données contenu dans ma listbox sont dans une collection. si je fais la montée ou la descente dans la collection que j'efface la totalité de ma listbox et la rafraichi pour réaffiché la nouvelle collection trié le résultat sur la listbox sera le même il me semble (que le monter/descendre que tu viens de proposer), or c'est plus intéréssant de faire comme ça puisque derrière j'effectue d'autres traitements avec cette collection et si celle si est trié (à la convenance de l'utilisateur via monter / descendre) se sera mieux. Est-il possible de faire cela ?
j'ai déja mes fonctionné d'affichage, de rafraichissement... il me manquerait le fait de changer la position dans la collection.
merci
je relance
comment ranger la collection dynamiquement en fonction du choix utilisateur (monter / descendre)
merci de m'éclairer
A vrai dire, je ne comprends pas trop la question
Erreur: Identificateur "la" non déclaré.les données contenu dans ma listbox sont dans une collection. si je fais la montée ou la descente dans la collection que j'efface la totalité de ma listbox et la rafraichi pour réaffiché la nouvelle collection trié le résultat sur la listbox sera le même il me semble (que le monter/descendre que tu viens de proposer), or c'est plus intéréssant de faire comme ça puisque derrière j'effectue d'autres traitements avec cette collection et si celle si est trié (à la convenance de l'utilisateur via monter / descendre) se sera mieux.
Erreur: Phrase trop longue.
Désolé, mon compilo est assez limité
"Si vous voulez être l’esclave des banques et payer pour financer votre propre esclavage, alors laissez les banquiers créer la monnaie" - Josiah Stamp, 1920, Gouverneur de la Banque d’Angleterre
"Qui ne peut acheter ruine qui voudrait vendre" - Jacques Duboin.
"Nous n'héritons pas la terre de nos parents, nous l'empruntons à nos enfants." - Antoine de Saint Exupéry
lol !
autant pour moi ! reprenons !
j'ai une listbox dans laquelle j'affiche des informations. Ces informations viennent d'une saisie utilisateur. Jusque là tout va bien. L'ordre dans lequel ces informations sont affichées dépend de l'ordre de saisie. Je donne la possibilité à l'utilisateur de modifier cet ordre d'affichage dans la listbox via un bouton monter / descendre. Seulement cette option affecte uniquement l'affichage de la listbox hors les données saisies par l'utilisateur (qui s'affichage une fois validé dans la listbox) sont dans une collection. je voudrais donc au lieux de trier les éléments dans ma listbox les trier dans ma collection directement
Exemple :
1ere saisie : Bonjour (validation)
2eme saisie : Au revoir (validation)
Ma collection contient donc :
Collection[0]:Bonjour
Collection[1]:Au revoir
Affichage de la listbox :
Bonjour
Au revoir
Si je clique pour faire monter Au revoir au dessus de Bonjour, je voudrais en fait ranger ma collection de cette façon :
Collection[0]:Au revoir
Collection[1]:Bonjour
nouvelle affichage de la listBox :
Au revoir
Bonjour
J'ai toutes mes méthodes pour afficher, rafraichir la listbox etc, il me manque uniquement la façon de procéder pour "ranger" la collection suivant le choix de l'utilisateur.
j'espère avoir été plus clair. Merci !
ok pour tout ce qui touche de pres ou de loin le databinding tout changement doit se faire a la source donc sur tes datatables ou tes collections.
pour faire un sorting je te conseil d'utiliser comme source une datatable et t'appliquer le sorting dessus ou alors d'utiliser une sortedlist "system.collection"
salut !
ça m'embête un peu si j'utilise sortedList je vais devoir tout redéfinir mes collections etc non ?
N'y a t-il pas une autre façon ?
merci
est faire un sorting sur ta collection, ca pause probleme ?
voici une partie du code permettant la manipulation d'une de mes collections. Comment puis-je implanter un sorting la dessus ?
merci beaucoup !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 public class Class1 { collectionCat MacollectionCat = new collectionCat(); public collectionCat GetcollectionCat() { return MacollectionCat; } } public class ClassCat { int numero; string libelle; public ClassCat(int _num, string _libelle) { numero = _num; libelle = _libelle; } public ClassCat() { } public int GetNumero() { return numero; } public string Getlibelle() { return libelle; } public string GetCat() { return "Numero : " + numero + " Libellé : " + libelle; } } public class collectionCat : System.Collections.CollectionBase { public void Ajout(ClassCat Cat) { List.Add(Cat); } public void Suppression(int position) { List.RemoveAt(position); } public ClassCat Selection(int position) { return (ClassCat)List[position]; } } //pour donner un exemple je manipule la collection de cette façon à partir d'une form //instance Class1 Cl = new Class1(); //exemple pour supprimer un élément de ma collection Cl.GetcollectionCat().Suppression(position);
Et bien ... tu faits un algo bidon, du genre :
Pour monter l'item qui est à la position X:
0.5) Tu vérifies que tu n'es pas deja en haut du tableau (X!=0)
1) Tu copies l'item (X) dans une variable (Y)
2) Tu copies l'item (X-1) dans (X)
3) Tu copies l'item (Y) dans (X-1)
salut !
l'algo bidon est fait pour les items sur la listbox mais je voudrais en fait effectuer cette manipulation directement sur la collection en question et non pas sur la listbox.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager