Problema con la proprietà relativa al set nel designer per la prima volta
-
08-07-2019 - |
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
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.