デザイナでの最初の関連プロパティの設定に関する問題
-
08-07-2019 - |
質問
フォームデザイナを開発し、ボタンなどの標準コントロールを継承するカスタムコントロールも開発します。
また、関連するいくつかのプロパティがあります。たとえば、ユーザーは最初に部門を選択し、次に個人を選択する必要があります。ユーザーが人を選択した後、カスタムコントロールのテキストを設定します(この場合はボタンから継承します)。
注:ユーザーはTextプロパティを変更できます。
すべてが正しく機能しますが、DBから読み込むか、コントロールをフォームデザイナにドラッグアンドドロップすると、controlName#のテキストが設定され、
Textプロパティをオーバーライドしてデバッグした後、テキストが正しく設定されていることがわかりますが、テキストを設定した後、デザイナーはcontrolName#でテキストを設定しました。これは間違っています。
この問題の解決方法
事前に感謝
ハミド
解決
ReadOnly
など、プロパティに適用できる属性があり、デザイナーがプロパティを設定するのを防ぎます。
現時点ではリンクが見つかりませんが、フォームデザイナに特定の順序でプロパティを設定するように伝える方法もあります。
編集:
わかりました、覚えていたものではありませんが、 ISupportInitialize インターフェース。
次のようなもの:
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
この方法では、オブジェクトが完全に初期化されるまで、すべてのチェックを無効にできます。
他のヒント
オーバーライドされた Text
セッターを controlName#
に設定されているかどうかを確認し、設定されている場合は何もしません。
所属していません StackOverflow