Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : DragDrop sur Datagridview [ Divers / General ] (Zayann)

samedi 30 août 2008 à 14:14:14 | DragDrop sur Datagridview

Zayann

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

HELP please...

dimanche 31 août 2008 à 00:16:06 | Re : DragDrop sur Datagridview

kinneri


bonsoir

voila une façon de faire un drag drop vers un datagrid

A+

Public IndexdInsertion AsInteger

PrivateSub DataGridView1_MouseDown(ByVal sender AsObject, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseDown

If DataGridView1.CurrentCell.Value <> ""Then

DataGridView1.DoDragDrop(DataGridView1.CurrentCell.Value, DragDropEffects.Copy

Or DragDropEffects.Move)

EndIf

EndSub

PrivateSub DataGridView2_DragOver(ByVal sender AsObject, ByVal e As System.Windows.Forms.DragEventArgs) Handles DataGridView2.DragOver

Dim a

a =

GetType(System.String)

IfNot (e.Data.GetDataPresent(GetType(System.String))) Then

e.Effect = DragDropEffects.None

Else

e.Effect = DragDropEffects.Copy

EndIf

EndSub

PrivateSub DataGridView2_DragDrop(ByVal sender AsObject, ByVal e As System.Windows.Forms.DragEventArgs) Handles DataGridView2.DragDrop

Dim item AsObject = CType(e.Data.GetData(GetType(System.String)), System.Object)

DataGridView2.Rows.Insert(IndexdInsertion, item)

EndSub

dimanche 31 août 2008 à 09:17:43 | Re : DragDrop sur Datagridview

Zayann


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

A +

lundi 1 septembre 2008 à 12:24:10 | Re : DragDrop sur Datagridview

kinneri


Bonjour,

voici une methode pour dragdrop multi colonne

Public

Class Form1

Dim data As DataGridViewRow

PrivateSub DataGridView1_MouseDown(ByVal sender AsObject, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseDown

If DataGridView1.CurrentCell.Value <> ""Then

Data = DataGridView1.Rows(DataGridView1.CurrentRow.Index).Clone()

' as DataGridViewRow;

Dim a

For i = 0 To Data.Cells.Count - 1

a = DataGridView1.CurrentRow.Cells(i).Value

data.Cells(i).Value = a

DataGridView2.DoDragDrop(data, DragDropEffects.Copy)

Next

EndIf

EndSub

PrivateSub DataGridView2_DragOver(ByVal sender AsObject, ByVal e As System.Windows.Forms.DragEventArgs) Handles DataGridView2.DragOver

e.Effect = DragDropEffects.Copy

EndSub

PrivateSub DataGridView2_DragDrop(ByVal sender AsObject, 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 Then

DataGridView2.Rows.Insert(hit.RowIndex, data)

Else

DataGridView2.Rows.Add(data)

EndIf

EndSub

End

Class

A+

lundi 1 septembre 2008 à 15:11:17 | Re : DragDrop sur Datagridview

Zayann

Merci beaucoup, ça marche nickel, sauf le problème avec l'ordre de sélection...

En debuggant j'ai compris pourquoi...
la cellule par défaut est la cellule 0...
Or la routine de copie :


PrivateSub DataGridView1_MouseDown(ByVal sender AsObject, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseDownIf DataGridView1.CurrentCell.Value <> ""Then

Data = DataGridView1.Rows(DataGridView1.CurrentRow.Index).Clone()

' as DataGridViewRow;Dim aFor i = 0 To Data.Cells.Count - 1

a = DataGridView1.CurrentRow.Cells(i).Value

data.Cells(i).Value = a

DataGridView2.DoDragDrop(data, DragDropEffects.Copy)

NextEndIfEndSub


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é.




lundi 1 septembre 2008 à 22:13:08 | Re : DragDrop sur Datagridview

kinneri

Bonsoir,

as tu tester la dernier version si dessus.?

car je n'ai pas ce probleme.

A+


lundi 1 septembre 2008 à 22:51:59 | Re : DragDrop sur Datagridview

Zayann

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...

A +

mardi 2 septembre 2008 à 06:14:28 | Re : DragDrop sur Datagridview

kinneri

bonjour,

ok, je vais voir pour qu'il se place a l'endroit ou la souris depose.

A+


mardi 2 septembre 2008 à 08:28:50 | Re : DragDrop sur Datagridview

Zayann

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)...

A +

mardi 2 septembre 2008 à 12:16:43 | Re : DragDrop sur Datagridview

kinneri

Bonjour,

colle ce code

PrivateSub DataGridView2_DragDrop(ByVal sender AsObject, 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 Then

DataGridView2.Rows.Insert(hit.RowIndex, data)

Else

DataGridView2.Rows.Add(data)

End If

End Sub

cela devrait resoudre ton probleme.

A+


1 2

Cette discussion est classé dans : datagridview, mousedown, datagridview1, dragdrop, byval


Répondre à ce message

Sujets en rapport avec ce message

2 datagridview liées vb2005express [ par vercomax ] bonsoir,j'ai 2 datagridview et souhaite les relier entre elle à l'aide de vb2005expressj'ai beau essayer, çà marche pas, je dois oublier qq chose.dans vb 2005 - dataGridView - checkboxcolumn [ par phana63 ] BoujourJ'utilse un datagridview avec une connexion access. Je  met des checkboxcolumn.Voila, a chaque fois que je coche une case (true ou false), je v DragDrop Backcolor [ par guillaume6431 ] Bonjour tous le monde,Ma question a peut etre deja été posée mais je n'ais pas encore reussi a trouver une solution efficace.Voila, je souhaite faire Impression datagridview [ par hafsa59 ] Salut, J'ai un petit problème concernant l'impression d'un datagridview en vb.net, j'ai cherché dans le site j'ai trouvé des sources, mais elle ne m datagridview [ par mohamed222222 ] Bonjour,Dans mon interface je charge un datagridview que je nomme datgridview1. Ensuite je souhaiterai affecté les valeurs de ce datagridview1 à un au contrôler la saisie dans un DataGridView [ par erakERA ] Bjr !je ve empêcher la saisie des valeurs non numériques dans une DataGridViewj'ai utilisé le code suivant mais tant que la valeur n'est pas commitée Masquer beaucoup de lignes dans un datagridview [ par chaudakh ] Bonjour,J'essaie de filtrer des lignes d'un datagridview (qu'on appellera Daragridview1)...A noter que ce datagridview n'est pas relié à une source de info bulle datagridview [ par sauce31 ] Bonjour,J'ai un datagridview qui stocke des nombres, suivie du signe $ si les nombres sont en dollars ( ex : 1234$)J'aimerais que lorsque l'utilisateu datagridview imprimer [ par mohamed222222 ] Bonjour,je souhaiterai imprimer le contenu de mon datagridview. pour cela j'utilise le code suivant :PrivateSub</font Datagridview [ par Dan2468 ] Bonjour, j'essaie d'afficher une valeur contenue dans mon datagrid view dans un textbox avec le code suivant: [CODE]txtCedPolNb.Text = frmRevStmt.Da


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,796 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.