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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 !