IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Peut-on se passer de DataGridView.EditingControl ?


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 181
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 181
    Par défaut Peut-on se passer de DataGridView.EditingControl ?
    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.

  2. #2
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 181
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 181
    Par défaut
    Bonjour.

    Bon, j'ai tenté une test tout bête pour mieux expliquer le truc et je ne reproduit pas le probléme (donc la vérité est ailleurs) !

    Je retourne au Cobol !

    Cdt.

  3. #3
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 181
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 181
    Par défaut
    Bonjour.

    Test tout bête :

    Pour voir, je rajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        Protected Overrides Sub Finalize()
            lstMyCol.Clear()
            MyBase.Finalize()
        End Sub
     
        Private Sub CLFWAddComboBoxEditingControl_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed
            lstMyCol.Clear()
        End Sub
    Avec un point d'arrêt sur chaque .clear, on se rend facilement compte que Finalize n'est jamais appelé et que l'évènement Disposed n'est déclenché qu'à la fermeture du form contenant le Datagridview.

    Une explication ?

    Cdt.

  4. #4
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 181
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 181
    Par défaut
    Bonjour.

    Une derniére remontée et je déleste.

    Suis-je le seul à avoir ce genre de comportement ? Personne n'a de réponse ou une idée (même bête) ?

    Cdt.

Discussions similaires

  1. Réponses: 43
    Dernier message: 05/02/2008, 20h06
  2. Réponses: 2
    Dernier message: 05/12/2007, 14h04
  3. [Static Link] Peut-on se passer de dll?
    Par shifty.net dans le forum MFC
    Réponses: 1
    Dernier message: 12/04/2006, 10h29
  4. [Outils][Deploiement] Peut-on se passer du Framework?
    Par kaygee dans le forum EDI/Outils
    Réponses: 2
    Dernier message: 28/03/2006, 11h18
  5. [Javascript] Peut on se passer de submit
    Par Invité dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/03/2006, 09h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo