[VB.net] Sourcegrid : connaître la cellule sous la souris
Bonjour !
Je travail avec le projet open source sourcegrid depuis pas mal de temps déjà, sur un programme en cours de développement. Dans les grandes lignes, même si c'est assez complexe à utiliser, c'est très puissant. Aujourd'hui, je suis en train de mettre en place un système permettant d'éditer ma grid, c'est à dire de réaliser des copier / couper / coller.
Rien de bien compliqué. Seulement j'aimerais pouvoir implémenter un contextmenustrip sur mon grid, là encore c'est assez facile, mais j'aimerais, lorsque je fais un clic droit, sélectionné la cellule présente sous ma souris (par défaut seul le clic gauche permet de sélectionné une cellule), afin d'avoir ses coordonnées si je dois manipuler ses informations.
J'ai donc créer un ContextMenuStrip contenant : Copier, Coller et Coller.
Ensuite j'ai créer une class "gridsFactEvent" qui récupère l'index sous la souris comme tel :
Code:
1 2 3 4 5 6 7 8 9
| Public Class gridsFactEvent
Inherits SourceGrid.Cells.Controllers.ControllerBase
Public pos as Integer
Public Overrides Sub OnMouseEnter(ByVal sender As SourceGrid.CellContext, ByVal e As System.EventArgs)
MyBase.OnMouseEnter(sender, e)
pos = sender.Position.Row
End Sub
End Class |
Seulement je ne sais pas comment communiquer entre ma forme et ma class. J'aimerais récupérer la variable pos lorsque je fais un clic-droit mais pour le moment je galère, pour deux raisons.
1) La form sur laquelle se trouve ma grid et depuis laquelle je vais gérer le contextmenustrip dispose d'un constructeur.
2) Ma classe gridsFactEvent nécessit également un constructeur.
Donc lorsque j'essaie de récupérer ma variable publique pos :
Code:
1 2
| Dim gridFact as new gridsFactEvent
Dim pos as Integer = gridFact.pos |
Comme il reconstruit ma classe, la variable pos est toujours égale à zéro. Même chose lorsque j'essaie d'accéder à une variable publique dans ma form, comme je suis obligé de l'appeler par un constructeur, la variable se réinitialise.
Vous comprenez ? Y-a-t'il un moyen de contourner ce problème de constructeur ?
Merci !