Pregunta

Desarrollo un Diseñador de formularios, también desarrollo un control personalizado que hereda del control estándar como el botón.

Además, tengo algunas propiedades relacionadas, por ejemplo, el usuario debe seleccionar el departamento primero y luego seleccionar la persona. y después de que el usuario seleccione a la persona, configuro el Texto de mi control personalizado (que heredo del botón en este caso).
Nota: el usuario puede cambiar la propiedad Text.

Todo funciona correctamente, pero cuando cargo desde la base de datos o arrastre y suelte el control para formar el diseñador, el texto de controlName # set,

Después de anular la propiedad Text y depurarla, veo el texto configurado correctamente, pero después de configurar mi texto, el diseñador configuró el texto con controlName # que está mal.

¿Cómo resolver este problema?

Gracias de antemano
Hamid

¿Fue útil?

Solución

Hay atributos que puede aplicar a sus propiedades, como ReadOnly , que también evitarán que el diseñador configure su propiedad.

No puedo encontrar el enlace en este momento, pero también hay un método para decirle al diseñador de formularios que debe establecer las propiedades en un cierto orden.


Edición :

Ok, no exactamente como lo recordaba, pero creo que algo así como el ISupportInitialize interfaz.

Algo así como:

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

De esta manera, todas sus comprobaciones se pueden deshabilitar hasta que su objeto se inicialice por completo.

Otros consejos

Puede verificar en su setter de Text reemplazado si se está configurando en controlName # y, si es así, no hacer nada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top