Drag and drop entre 2 datagridview

Résolu
zlorg Messages postés 3 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 26 mars 2010 - 15 oct. 2007 à 15:21
aymen_oussama Messages postés 8 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 29 juillet 2010 - 28 juil. 2010 à 01:02
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

3 réponses

zlorg Messages postés 3 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 26 mars 2010
26 oct. 2007 à 09:47
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
3
aymen_oussama Messages postés 8 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 29 juillet 2010
28 juil. 2010 à 00:45
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
0
aymen_oussama Messages postés 8 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 29 juillet 2010
28 juil. 2010 à 01:02
' 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)))
0
Rejoignez-nous