Deplacer des lignes listview à l'aide de bouton

cs_francois39 Messages postés 21 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 26 novembre 2009 - 19 févr. 2009 à 20:30
cs_francois39 Messages postés 21 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 26 novembre 2009 - 24 févr. 2009 à 12:40
bonjour

je voudrais pouvoir déplacer les lignes d'une listview

j'ai une listview nommé Tableau et j'aimerai  déplacer par exemple la derniere ligne du tableau à la premiere ligne et que la premiere ligne devienne la deuxieme ligne ect

colonne1         colonne2
AAAA            ZZZZ
EEEE             RRRR
TTTT             YYYY

apres déplacement:

colonne1        colonne2
TTTT              YYYY
AAAA            ZZZZ
EEEE             RRRR
           
Pour deplacer les lignes vers le haut et vers le bas j'utilise deux bouton nommé bHaut et bBas.

merci

8 réponses

RougailSaucisse Messages postés 118 Date d'inscription lundi 16 février 2009 Statut Membre Dernière intervention 6 décembre 2010 1
20 févr. 2009 à 03:57
Salut,

alors je ne sais pas s'il n'y a pas un moyen direct de le faire mais si ce n'est le cas moi j'aurai eventuellement fais comme ceci:

Pour le code du bouton "UP":

ListViewItem backup = listView1.SelectedItems[0];
int index = backup.Index;
if ( index > 0)
{
  listView1.Items.Remove(backup);
  listView1.Items.Insert(index - 1, backup);
  listView1.Items[index - 1].Selected = true;
  listView1.Focus();
}

Voila, je pense que ce code devrait fonction, c'est plus un workaround qu'autre chose mais bon ^^
0
cs_francois39 Messages postés 21 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 26 novembre 2009
23 févr. 2009 à 17:35
merci sa marche
 mais sa marche pas de la premiere ligne du tableau à la derniere ligne pour le bouton "up".
et de la derniere ligne à la premiere pour le bouton bas.
comment faire?

merci
0
RougailSaucisse Messages postés 118 Date d'inscription lundi 16 février 2009 Statut Membre Dernière intervention 6 décembre 2010 1
23 févr. 2009 à 20:26
pour le up je pense qu'un truc comme ceci devrait marcher (pas forcement la meilleure solution mais bon)
if (index >= 0)
{    int newPos (index 0) ? listView1.Items.Count - 1 : index - 1;
    listView1.Items.Remove(backup);
    listView1.Items.Insert(newPos, backup);
    listView1.Items[newPos].Selected = true;
    listView1.Focus();
}

pour le down mm chose en remplacant juste par:
int newPos (index 0) ? listView1.Items.Count - 1 : index - 1;

voila ;)
0
cs_francois39 Messages postés 21 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 26 novembre 2009
23 févr. 2009 à 21:38
Pouvez vous remettre la ligne pour le bouton du bas svp?
Pour le bouton haut sa marche nikel
merci encore
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
RougailSaucisse Messages postés 118 Date d'inscription lundi 16 février 2009 Statut Membre Dernière intervention 6 décembre 2010 1
23 févr. 2009 à 21:43
"Down":

if (index >= 0)
{    int newPos (index 0) ? listView1.Items.Count - 1 : index - 1;
    listView1.Items.Remove(backup);
    listView1.Items.Insert(newPos, backup);
    listView1.Items[newPos].Selected = true;
    listView1.Focus();
}
0
cs_francois39 Messages postés 21 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 26 novembre 2009
23 févr. 2009 à 22:42
cela fait la même chose qu epour le bouton haut.
0
RougailSaucisse Messages postés 118 Date d'inscription lundi 16 février 2009 Statut Membre Dernière intervention 6 décembre 2010 1
23 févr. 2009 à 23:09
tu as du mal recopier le code je pense, car ca semble fonctioner chez moi. voila une version pour factoriser un peu ce code.
//direction true up, false down
private void MoveItem(bool direction, ListView listView)
{
    ListViewItem backup = listView.SelectedItems[0];
    int index = backup.Index;

    if (index >= 0)
    {
        int newPos;
        if (direction)            newPos (index 0) ? listView.Items.Count - 1 : index - 1;
        else            newPos (index listView.Items.Count - 1) ? 0 : index + 1;

        listView.Items.Remove(backup);
        listView.Items.Insert(newPos, backup);
        listView.Items[newPos].Selected = true;
        listView.Focus();
    }
}

//click sur bouton UP
private void button1_Click(object sender, EventArgs e)
{
    MoveItem(true, listView1);
}

//click sur bouton DOWN
private void button2_Click(object sender, EventArgs e)
{
    MoveItem(false, listView1);
}
0
cs_francois39 Messages postés 21 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 26 novembre 2009
24 févr. 2009 à 12:40
merci sa marche super bien
Savez vous s'il est possible de modifier une list view manuellement ???
Car j'utilise une propriété labelEdit mais il n'est pas possible de modifier ma deuxieme colonnes, je peux modifier que la premiere???
0