Bonjour.
Je viens de découvrir (je pense), l'explication de comportements bizarres dans mes controles d'éditions hébergés par les cellules d'un datagridview.
Il semble que lorsqu'une cellule passe en mode d'édition, on récupére les propriétés personnalisées positionnées lors de l'édition de la cellule précédente.
Typiquement, j'ai une class déclarée comme ceci :
Public Class CLFWAddComboBoxEditingControl
Inherits DataGridViewComboBoxEditingControl
Rien de bien folichon jusque là... dans cette classe j'ai :
Protected lstMyCol As New SortedList(Of Integer, myCol)
Lorsque du passage en mode d'édition d'une cellule, je récupére dans ma sortedlist les valeurs positionnées par le passage en mode d'édition précédent sur une autre cellule !!!
D'où obligation de faire un lstMyCol.Clear() avant initialisation...
J'ai d'abord cru à un soucis de déclaration de la sortedlist, mais j'ai le même soucis avec un "Protected fFont As Font" --> si je n'initialise pas fFont dans le sub new, je me récupère la valeur positionnée lors de l'édition précédente.
En creusant un peu, mon control d'édition n'est qu'un cast de DataGridView.EditingControl, et ce peut-il que je me récupére lors du cast les propriétés de mon objet perso précédent (même zone mémoire ???) ??????
Pour rappel dans un célèbre exemple msdn on a :
Dim ctl As CalendarEditingControl = _
CType(DataGridView.EditingControl, CalendarEditingControl)
ctl.Value = CType(Me.Value, DateTime)
Alors ok pour dire que ctl.Value est bien modifié à chaque édition (normal) ... mais les variables internes (à la classe) le sont-elles vraiment ?
Peut-on contourner ce fonctionnement ou suis-je complétement à la rue et personne n'a ce genre de probléme (auquel cas je me remets au Cobol) ?
Cdt.
Partager