0

私のプロジェクトで視覚的な継承を実装しました。ベース フォームから 2 つの派生フォームがあります。また、1 つの基本クラスから 2 つの通常の派生クラスがあります。各派生フォームは、適切なクラスのオブジェクトを開始する派生クラスの 1 つを扱います。たとえば、"letter" と呼ばれる基本形式と 2 つの派生形式 "A" および "B" があり、基本クラス "base" と 2 つの派生クラス "a" および "b" があります。「a」からのオブジェクトは、「A」を「呼び出す」ときにインスタンス化され、「b」と「B」についても同じルールです。

フォーム「A」で行うことは、いくつかのテキストボックスを使用してクラス「a」のオブジェクトのプロパティを入力し、フォーム「B」の場合はクラス「b」のオブジェクトのプロパティを入力することです。

私が期待していたのは、プログラムの特定のポイント (この場合は別のフォーム) から各フォーム (「A」または「B」) を「呼び出し」、インスタンス化したオブジェクトで作業することでした。正しい形のイベント。

問題は、フォーム「A」と「B」からのイベントのコードが 95% の確率で同じであることです。私は最初、そのすべてを基本フォーム (「文字」) に配置して、そこで派生オブジェクトを操作できると考えましたが、できません。これは基本的に、派生フォームでインスタンス化したオブジェクトを基本フォームからのイベントで使用できないために発生します。たとえば、「A」で作成したクラス「a」のオブジェクトを「letter」のイベントで操作することはできませんが、「letter」で作成したクラス「a」のオブジェクトを操作することはできます」 「A」に関するイベントを含む「レター」。熟考した後、なぜこれが起こるのかがわかりました。

私の解決策は、すべてのイベント コードをフォーム "A" と "B" に配置することでした。これはうまく機能します。

問題は、フォーム「A」と「B」からの私のイベントが、95% の確率で類似していることです。私はかなり厄介で不必要なことをしていると思います。だから、私の質問は、イベントを一度だけ書き込めるように作業を最適化するにはどうすればよいですか? 笑、長い投稿と短い質問。助けていただければ幸いです。

ありがとう、

リカルド S.

4

1 に答える 1

0

文字は base のインスタンスを持つことができます。In A には、base のインスタンスを a に変換するプロパティがあります。

Class letter
    Inherits Forms

    protected _base As base
End Class

Class A
    Inherits letter

    Public ReadOnly Property objA As a
        Get
            Return CType(_base, a)
        End Get
    End Property

    Public Sub New()
        _base = new a
    End Sub
End Class

もう 1 つのオプションは、パラメーターとしてベースを取る同様の機能を含むユーザー コントロールを作成することです。次に、同じユーザー コントロールを両方のフォームに配置するだけです。

于 2013-11-14T15:29:20.307 に答える