Drag and drop entre 2 datagridview [Résolu]

Signaler
Messages postés
3
Date d'inscription
mercredi 27 octobre 2004
Statut
Membre
Dernière intervention
26 mars 2010
-
Messages postés
8
Date d'inscription
dimanche 18 mars 2007
Statut
Membre
Dernière intervention
29 juillet 2010
-
Bonjour,

Dans un form, j'ai 2 datagridview ( chacun d'eux avec des colonnes de type DataGridViewImageColumn ). Je voudrais faire un drag and drop d' un Datagrid vers l'autre.Tout fonctionne, sauf que ..... le drop ne se fait jamais dans la bonne cellule. Je ne comprends pas pourquoi !!! Quelqu'un pourrait-il m'aider ? Merci.

Voici mon code :

private

void TargetDataGridView_DragDrop(
object sender,
DragEventArgs e)
{
   D
ataGridView.
HitTestInfo myHitTest;
   myHitTest = TargetDataGridView
.HitTest(e.X, e.Y);  TargetDataGridView
.Rows[myHitTest.RowIndex].Cells[myHitTest.ColumnIndex].Value = e.Data.GetData(

DataFormats.Bitmap);

}

Zlorg
A voir également:

3 réponses

Messages postés
3
Date d'inscription
mercredi 27 octobre 2004
Statut
Membre
Dernière intervention
26 mars 2010

Bon, finalement, j'ai trouvé, je donne la solution, ça pourra peut être, être utile à certains ...  mais il faut utiliser  PointToClient

Voici le code ...

private

void DataGridView1_DragDrop(
object sender,
DragEventArgs e){

DataGridView.
HitTestInfo myHitTest;

Point PointArrivee =
new
Point();

Point PointClient =
new
Point();

//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 =DataGridView1.PointToClient(PointArrivee);

//Recup du HitTestInfo
myHitTest =DataGridView1.HitTest(PointClient.X,PointClient.Y );

//Affichage de l'image dans la cellule
DataGridView1.Rows[myHitTest.RowIndex].Cells[myHitTest.ColumnIndex].Value = e.Data.GetData(
DataFormats.Bitmap);

}

Zlorg
Messages postés
8
Date d'inscription
dimanche 18 mars 2007
Statut
Membre
Dernière intervention
29 juillet 2010

Bonjour à tt le monde
je voudrai savoir comment je peut glisse déplacer un DataRow d'un DataGridView à un autre
mon code est le suivant :
'Le DataGridView source auquel on va copier la ligne
[b]Private Sub DataGridView1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseDown
Try
If e.Button = Windows.Forms.MouseButtons.Left Then
'on récupére l'index du Row sélectionner
Dim Index As Integer
Index = DataGridView1.HitTest(e.X, e.Y).RowIndex
If Index > -1 Then
DataGridView1.DoDragDrop(DataGridView1.Rows.Item(Index), _DragDropEffects.Copy)
End If
End If
Catch ex As Exception
Exit Sub
End Try
End Sub/b
***************** Donc si j'ai bien compris jusqu'au là , j'ai copier la ligne du dataGridView
'Dans l'autre DataGridView j'ai insérer ce code :
Private Sub DataGridView1_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles DataGridView1.DragEnter
e.Effect = DragDropEffects.Copy
End Sub

mais le pbme c que je ne sais pas comment récupérer ce Row dans l'événement DragDrop
*****
[b]Private Sub DataGridView1_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles DataGridView1.DragDrop
DataGridView1.Rows.Add(????????)
End Sub/b

**** j'ai trouver cette méthode mais je ne sais pas vraiment comment l'exploiter:
e.Data.GetData avec e As System.Windows.Forms.DragEventArgs
Messages postés
8
Date d'inscription
dimanche 18 mars 2007
Statut
Membre
Dernière intervention
29 juillet 2010

' ce bout de code ajoute une ligne au DataGridView mais hélas une ligne qui 'est viiiiiiiiiiiiiide bfffffffff

DataGridView1.Rows.Add(e.Data.GetData(GetType(System.String)))