Zayann
Messages postés75Date d'inscriptionmardi 22 avril 2008StatutMembreDernière intervention15 juillet 2015
-
30 août 2008 à 14:14
kinneri
Messages postés44Date d'inscriptionjeudi 14 octobre 2004StatutMembreDernière intervention 3 septembre 2008
-
10 sept. 2008 à 13:49
Bonjour...
Je cherche à faire un glisser/déposer entre deux datagridview.
Avec l'aide j'ai réussi à saisir les données mais je n'arrive pas à les mettre dans mon deuxième datagridview...
Private Sub datagridview1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseDown
DataGridView1.DoDragDrop(DataGridView1.Rows, DragDropEffects.Copy Or DragDropEffects.Move)
End Sub
kinneri
Messages postés44Date d'inscriptionjeudi 14 octobre 2004StatutMembreDernière intervention 3 septembre 2008 2 sept. 2008 à 16:13
ha bon,
c'est bizarre, je n'ai pas ce probleme.
il insere bien, la ligne demandé.
je poste ci dessous toute la source dans le cas ou tu aurais une erreur.
verifie que la zone est bien selectionné. je viens d'avoir le probleme, mais la zone n'etait pas selectionné comme il faut.
il faut faire 1 click avant sur la zone pour le selectionné.
Public
Class Form1
Dim data
As DataGridViewRow, hit
Private clickedCell
As DataGridViewCell
Private
Sub DataGridView1_MouseDown(
ByVal sender
As
Object,
ByVal e
As System.Windows.Forms.MouseEventArgs)
Handles DataGridView1.MouseDown
If DataGridView1.CurrentCell.Value <>
""
ThenData = DataGridView1.Rows(DataGridView1.CurrentRow.Index).Clone()
' as DataGridViewRow;
Dim a
For i = 0
To Data.Cells.Count - 1a = DataGridView1.CurrentRow.Cells(i).Value
Private
Sub DataGridView2_DragDrop(
ByVal sender
As
Object,
ByVal e
As System.Windows.Forms.DragEventArgs)
Handles DataGridView2.DragDrop
'ByVal e As System.Windows.Forms.DragEventArgs
Dim clientPoint
As Point = DataGridView2.PointToClient(
New Point(e.X, e.Y))
Dim hit
As DataGridView.HitTestInfo = DataGridView2.HitTest(clientPoint.X, clientPoint.Y)
If hit.RowIndex <> -1
ThenDataGridView2.Rows.Insert(hit.RowIndex, data)
ElseDataGridView2.Rows.Add(data)
End
If
End
Sub
Private
Sub DataGridView2_DragOver(
ByVal sender
As
Object,
ByVal e
As System.Windows.Forms.DragEventArgs)
Handles DataGridView2.DragOvere.Effect = DragDropEffects.Copy
Zayann
Messages postés75Date d'inscriptionmardi 22 avril 2008StatutMembreDernière intervention15 juillet 20151 31 août 2008 à 09:17
Merci beaucoup...
Deux petits problèmes...
La copie ne s'effectue que sur une des colonnes... Mes datagridview contiennent deux colonnes, une nom et une nombre.
Seul la colonne du nom se copie...
Autre petit problème il y a un décalage entre la sélection et le copie, je m'explique...
je dragdrop l'item 1, pas de problème.
je dragdrop l'item 2, nouvelle copie de l'item 1
je dragdrop l'item 3, copie de l'item 2
je dragdrop l'item 4, copie de l'item 3
Dans le désordre, l'ordre que je choisi est bien respecté mais le code copie systématiquement l'item 1 en premier...
Merci déja pour le code, c'est plus que ce que j'avais pu faire...
je vais le regarder en détaille
Private
Sub DataGridView2_DragOver(
ByVal sender
As
Object,
ByVal e
As System.Windows.Forms.DragEventArgs)
Handles DataGridView2.DragOvere.Effect = DragDropEffects.Copy
End
Sub
Private
Sub DataGridView2_DragDrop(
ByVal sender
As
Object,
ByVal e
As System.Windows.Forms.DragEventArgs)
Handles DataGridView2.DragDrop
Dim clientPoint = DataGridView2.PointToClient(
New Point(e.X, e.Y))
Dim hit = DataGridView2.HitTest(e.X, e.Y)
If hit.RowIndex <> -1
ThenDataGridView2.Rows.Insert(hit.RowIndex, data)
ElseDataGridView2.Rows.Add(data)
End
If
End
SubEnd
Class
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
met la cellule sélectionnée comme active que lors de la sortie de la routine...
Lors de la sélection, la routine active est toujours la précédente, tant que le bouton n'est pas relâché.
Zayann
Messages postés75Date d'inscriptionmardi 22 avril 2008StatutMembreDernière intervention15 juillet 20151 1 sept. 2008 à 22:51
Bonsoir...
Oui elle a été testé et fonctionne très bien, encore merci....
C'est vraiment un problème de focus sur la cellule...
la cellule choisie prend le focus mais à la fin de la procédure, le dragdrop se fait donc sur la cellule précédente - qui a encore le focus - ou sur la cellule 0 par défaut.
J'ai essayé de forcé le focus lorsque la souris passe sur une cellule mais cela n,e fonctionne pas...
Je vais refaire des test demain...
Zayann
Messages postés75Date d'inscriptionmardi 22 avril 2008StatutMembreDernière intervention15 juillet 20151 2 sept. 2008 à 08:28
Bonjour,
J'ai refait des test ce matin...
Effectivement, le focus devient actif sur la cellule voulue au moment du relâchement du bouton de la souris...
La seul solution que j'entrevoie est donc de donner le focus à la cellule lorsqu'elle est survolée par la souris (sans clic donc), peut être par un évennement : DataGridView1.CellMouseEnter...
Je vais encore essayé cette solution (hier soir c'était pas vraiment une réussite)...
kinneri
Messages postés44Date d'inscriptionjeudi 14 octobre 2004StatutMembreDernière intervention 3 septembre 2008 2 sept. 2008 à 12:16
Bonjour,
colle ce code
Private
Sub DataGridView2_DragDrop(
ByVal sender
As
Object,
ByVal e
As System.Windows.Forms.DragEventArgs)
Handles DataGridView2.DragDrop
'ByVal e As System.Windows.Forms.DragEventArgs