Domanda

I Develop a Form Designer, sviluppo anche alcuni controlli personalizzati che ereditano dal controllo standard come pulsante.

Inoltre, ho alcune proprietà correlate, ad esempio l'utente deve prima selezionare il reparto, quindi selezionare la persona. e dopo la selezione dell'utente, imposto Testo del mio controllo personalizzato (che eredita dal pulsante in questo caso).
Nota: l'utente può modificare la proprietà Text.

Tutto funziona correttamente, ma quando carico da DB o trascino il controllo sul form designer, Text of controlName # set,

Dopo aver sovrascritto la proprietà Text e averlo eseguito il debug, vedo il testo impostato correttamente, ma dopo aver impostato il mio testo, il designer ha impostato il testo con controlName # che è sbagliato.

Come risolvere questo problema?

Grazie in anticipo
Hamid

È stato utile?

Soluzione

Ci sono attributi che puoi applicare alle tue proprietà come ReadOnly che impediranno al designer di impostare anche la tua proprietà.

Al momento non riesco a trovare il link, ma esiste anche un metodo per dire al progettista di moduli che dovrebbe impostare le proprietà in un certo ordine.


Modifica

Ok, non proprio come me lo ricordavo, ma penso che qualcosa come ISupportInitialize .

Qualcosa del tipo:

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

In questo modo tutti i controlli possono essere disabilitati fino a quando l'oggetto non viene inizializzato completamente.

Altri suggerimenti

Puoi verificare nel setter Testo ignorato se è impostato su controlName # e, se lo è, non fare nulla.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top