0

フォームデザイナを開発し、ボタンなどの標準コントロールを継承するカスタムコントロールも開発します。

また、関連するプロパティがいくつかあります。たとえば、ユーザーは最初に部門を選択してから、人を選択する必要があります。ユーザーが人を選択した後、カスタムコントロールのテキスト(この場合はボタンから継承)を設定します。
注:ユーザーはTextプロパティを変更できます。

すべてが正常に機能しますが、DBからロードするか、コントロールをフォームデザイナーにドラッグアンドドロップすると、controlName#のテキストが設定されます。

Textプロパティをオーバーライドしてデバッグした後、テキストが正しく設定されているのがわかりますが、テキストを設定した後、デザイナーはcontrolName#を使用してテキストを設定しました。これは間違っています。

この問題を解決する方法は?

よろしくお願いします
ハミド

4

2 に答える 2

1

プロパティに適用できる属性があります。たとえば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

このようにして、オブジェクトが完全に初期化されるまで、すべてのチェックを無効にすることができます。

于 2009-10-28T15:07:10.013 に答える
0

オーバーライドTextされたセッターがに設定されているかどうかをチェックインし、設定されているcontrolName#場合は何もしません。

于 2009-10-28T15:03:19.693 に答える