Comment est-ce que je fais défiler par programme un contrôle de dataGrid de winforms?
Je me suis mise en œuvre de certaines de glisser-déposer, dans une de mes commandes héritent d'un datagridview. Fondamentalement, je suis en faisant glisser une ligne à partir de quelque part dans le DGV et de le déposer ailleurs, la réorganisation des lignes. J'ai couru dans un problème. Si la DGV est aussi grand tel qu'il y a une barre de défilement, comment puis-je avoir la DGV faites défiler vers le haut ou vers le bas pendant que l'utilisateur est au milieu d'un glisser-déplacer?
Je sais comment obtenir la position actuelle de la souris et également obtenir la position de la dg v, rectangle, par exemple. Donc, je peux facilement savoir si je suis dans le haut ou le bas de la moitié du rectangle... j'ai juste besoin d'un moyen de faire défiler la dgv. Je préfère si je n'ai pas de changer la cellule sélectionnée pour ce faire.
Des suggestions?
Grâce
Isaac
source d'informationauteur Isaac Bolinger
Vous devez vous connecter pour publier un commentaire.
Bien, puisque c'est un datagridview... Désolé pour le "winforms" dans la question... mais je viens de le faire.. défilement vers le haut ou vers le bas une ligne.
Faites défiler vers le haut:
Faites Défiler Vers Le Bas:
Tu dois le faire, assurez-vous que les numéros ne pas sortir des limites du terrain.
vous pouvez le faire en mettant
HorizontalScrollingOffset
/VerticalScrollingOffset
de laDataGridView
pour définir HorizontalScrollingOffset
vérifier
DataGridView.HorizontalScrollingOffset Propriété
et
pour
VerticalScrollingOffset
vous pouvez utiliser la Réflexioninclure l'espace de noms
System.Reflection
Vous pouvez le faire en utilisant WinAPI par l'envoi d'un message pour le contrôle de la raconter pour faire défiler vers le haut ou vers le bas.
Voici le code, j'espère que cela aide:
Maintenant, en supposant que vous avez un contrôle de zone de texte sur votre formulaire. Vous pouvez le déplacer avec:
Si classique que la solution ne fonctionne pas pour vous. Vous pouvez regarder la FirstDisplayedScrollingRowIndex de la Propriété et de le modifier au sujet de votre position de la souris pendant le déplacement.
Vous avez besoin pour mettre en œuvre l'événement DragOver. Vérifier si la souris est situé à proximité vers le haut ou le bas de la commande (utilisation PointToClient). Lorsqu'elle l'est, activer une minuterie avec un intervalle de ~200 msec. Dans la Tique gestionnaire d'événements de défilement de la DGV par une rangée. Désactiver la minuterie lorsque la souris n'est pas à proximité et après DoDragDrop retourne. L'utilisateur peut désormais facilement et de manière intuitive, faire défiler la grille juste en vol stationnaire près de l'extrémité.