Question

Je développe un concepteur de formulaire, ainsi que certains contrôles personnalisés hérités du contrôle standard, tels que le bouton.

De plus, certaines propriétés sont liées, par exemple, l'utilisateur doit d'abord sélectionner un département, puis une personne. et après que l'utilisateur sélectionne la personne, je règle le texte de mon contrôle personnalisé (qui hérite du bouton dans ce cas).
Remarque: l'utilisateur peut modifier la propriété Text.

Tout fonctionne correctement, mais lorsque je charge à partir d'une base de données ou d'un contrôle-glisser pour le concepteur de formulaire, le texte de controlName # set,

Après avoir remplacé la propriété Text et l'avoir débogué, je vois que le texte est défini correctement, mais après avoir défini mon texte, le concepteur a défini le texte avec controlName # this this false.

Comment résoudre ce proplem?

Merci d'avance
Hamid

Était-ce utile?

La solution

Il existe des attributs que vous pouvez appliquer à vos propriétés, tels que ReadOnly , qui empêcheront le concepteur de définir également votre propriété.

Je ne trouve pas le lien pour le moment, mais il existe également une méthode permettant au concepteur de formulaires de définir les propriétés dans un certain ordre.

Modifier:

Ok, pas vraiment ce dont je me souvenais, mais je pense quelque chose comme le ISupportInitialize , interface.

Quelque chose comme:

Public Class Test
    Implements ISupportInitalise

    private _numberOne as integer
    private _numberTwo as integer
    private _initalised as boolean

    Public Property NumberOne() as Integer
        Get
            return _numberOne
        End Get
        Set(value as Integer)

            if _initalised then
                'perform checks here'
            end if

            _numberOne = value 
        End Set
    End Property

    Public Property NumberTwo() as Integer
        Get
            return _numberTwo
        End Get
        Set(value as IntegeR)
            if _initalised then
                'perform checks here'
            end if

            _numberTwo = value 
        End Set
    End Property

    Public Sub BeginInit Implements ISupportInitalise.BeginInit
        _initalised = false
    End Sub

    Public Sub EndInit Implements ISupportInitalise.EndInit
        _initalised = true

        'perform all checks here'
    End Sub

End Class

Ainsi, toute votre vérification peut être désactivée jusqu'à l'initialisation complète de votre objet.

Autres conseils

Vous pouvez vérifier dans le paramètre Text de votre remplaçant s'il est défini sur nomContrôle # et, le cas échéant, ne rien faire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top