IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Drap sur datagridview


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2009
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 172
    Par défaut Drag sur datagridview
    Bonjour à tous,
    Je possède un seul datagridview avec 12 lignes que je remplis dans mon code.
    J'aimerais que l'on puisse en sélectionner une et la faire glisser sur une autre. (donc quand on reste cliqué on a la ligne qui suit la souris en gros).

    Et que lorsqu'elle glisse sur une autre on appelle une fonction qui change le background de ces deux lignes.

    Comment réaliser cela?
    J'ai bien cherché sur internet mais à chaque fois ils parlaient d'un glisser déposé entre deux datagridview.

    Merci d'avance, r0seBa

  2. #2
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    En assemblant 2 bouts de code trouvé sur le Web :
    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
    private void dgvGrid1_MouseDown(object sender, MouseEventArgs e)
    {
      dgvGrid1.HitTestInfo htiInfo = dgvGrid1.HitTest(e.X, e.Y);
      if (htiInfo.RowIndex == -1 || htiInfo.ColumnIndex == -1) return;
      dgvGrid1.DoDragDrop(htiInfo.RowIndex, DragDropEffects.All);
    }
     
    void DataGridView1_DragDrop(object sender, DragEventArgs e)
    {
      DataGridView.HitTestInfo myHitTest;
      Point PointArrivee = newPoint();
      Point PointClient = newPoint();
      //Récup des coordonnées du clic dans le form
      PointArrivee.X = e.X;
      PointArrivee.Y = e.Y;
      //Conversion coordonnées dans le datagridview
      PointClient =dgvGrid1.PointToClient(PointArrivee);
      //Recup du HitTestInfo
      myHitTest =dgvGrid1.HitTest(PointClient.X,PointClient.Y );
      // récupération du RowIndex source et destination
      int DestRowIndex= dgvGrid1.Rows[myHitTest.RowIndex];
      int SourceRowIndex= e.Data.GetData(typeof(int));
      // Le traitement du drag and drop 
      // ....
    }

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2009
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 172
    Par défaut
    Bonjour, merci pour ta réponse.

    Cependant lorsque que je met ton code, je ne peux pas sélectionner d'élément et le faire glisser en fait.
    Dés que j'essaye j'ai un sens interdit noir qui m'interdit de le déposer. Comme signifiant que l'opération déplacer n'était pas possible.
    J'ai vérifié dans la première fnction les deux sont biens différents de -1.

    Sachant que pour ces deux lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int DestRowIndex= dgvGrid1.Rows[myHitTest.RowIndex];
      int SourceRowIndex= e.Data.GetData(typeof(int));
    J'ai du rajouté un System.convert.toint pour enlever les erreurs que VS me donnait.

  4. #4
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    As-tu activé le AllowDrop ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dgvGrid1.AllowDrop = true;

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2009
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 172
    Par défaut
    oui oui

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2009
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 172
    Par défaut
    J'ai toujours ce problème: Impossible de faire glisser les éléments du tableau: le sens interdit

    Voilà mon code :
    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
    51
    52
    53
    54
    55
    56
     
            private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
            {
                System.Windows.Forms.DataGridView.HitTestInfo htiInfo = dataGridView1.HitTest(e.X, e.Y);
     
                if (htiInfo.RowIndex == -1 || htiInfo.ColumnIndex == -1) return;
                //DialogResult merde = MessageBox.Show(htiInfo.RowIndex.ToString()+" "+htiInfo.ColumnIndex.ToString());
                this.dataGridView1.DoDragDrop(this.dataGridView1.Rows[htiInfo.RowIndex], DragDropEffects.All);
     
            }
            void dataGridView1_DragDrop(object sender, DragEventArgs e)
            {
                DataGridView.HitTestInfo myHitTest;
                Point PointArrive = new Point();
                Point PointClient = new Point();
     
                //Recup des coordonnés du clic dans le form
                PointArrive.X = e.X;
                PointArrive.Y = e.Y;
                //Conversion des coordonnés dans le datagridview
                PointClient = this.dataGridView1.PointToClient(PointArrive);
                //Récupération du HiTestInfo
                myHitTest = this.dataGridView1.HitTest(PointClient.X, PointClient.Y);
                //Récup du rowindex source et destination
     
                int DestRowIndex = System.Convert.ToInt32(this.dataGridView1.Rows[myHitTest.RowIndex]);
                int SourceRowIndex = (int)e.Data.GetData(typeof(int));
     
                //Traitement du drag and drop
                this.dataGridView1.Rows[SourceRowIndex].Cells[2].Style.BackColor = Color.Red;
                //===========
            }
            private void dataGridView1_DragOver(object sender, DragEventArgs e)
            {
     
                DataGridView.HitTestInfo myHitTest;
                Point PointArrive = new Point();
                Point PointClient = new Point();
     
                //Recup des coordonnés du clic dans le form
                PointArrive.X = e.X;
                PointArrive.Y = e.Y;
                //Conversion des coordonnés dans le datagridview
                PointClient = this.dataGridView1.PointToClient(PointArrive);
                //Récupération du HiTestInfo
                myHitTest = this.dataGridView1.HitTest(PointClient.X, PointClient.Y);
                //Récup du rowindex source et destination
     
                //int DestRowIndex = this.dataGridView1.Rows[myHitTest.RowIndex].;
                int SourceRowIndex = (int)e.Data.GetData(typeof(int));
     
                //Traitement du drag and drop
                //....
                //===========
     
            }
    Merci

Discussions similaires

  1. aide sur datagridview
    Par flex@ dans le forum C#
    Réponses: 1
    Dernier message: 20/11/2007, 20h05
  2. changement de ColumnType sur DataGridView
    Par olifile dans le forum Windows Forms
    Réponses: 2
    Dernier message: 22/06/2007, 17h35
  3. [C#] Tri sur DataGridView
    Par Actarion dans le forum Windows Forms
    Réponses: 2
    Dernier message: 06/08/2006, 13h52
  4. [VB.NET]récuperation d'information sur datagridview
    Par philippe carel dans le forum Windows Forms
    Réponses: 2
    Dernier message: 11/05/2006, 08h58
  5. [C#] Pb sur DataGridView
    Par hobotalker dans le forum Windows Forms
    Réponses: 5
    Dernier message: 18/01/2006, 16h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo