0

を実装するコンポーネントがありますIExtenderProvider。1 つのプロパティには、ユーザーがプロジェクト内で使用するコンポーネントのインスタンスごとに同じ設定が含まれています。(また、各インスタンスで編集可能)

デザイン時にユーザー コントロールの複数のインスタンスで情報を共有する一般的な方法は何ですか? app.configこの設定には GUI が必要なので、手動で に書き込むことは解決策ではありません。

前もって感謝します

フィンドニクス

前述の静的プロパティは、プロパティが設計時にのみ必要な場合にうまく機能しますが、私の場合、プロパティは実行時にも必要です。この場合、各インスタンスは、設計時に設定された値を静的プロパティに設定します。つまり、値はインスタンスの初期化順序に依存します。

例:

設計時:

コンポーネントをフォーム 1 に追加し、値を「Form1」に設定します。

コンポーネントをフォーム 2 に追加し、値を「Form2」に設定します。

現在、値は両方のインスタンスのデザイナで「Form2」ですが、実行時に両方のフォームがロードされている場合、値は常に最後にロードされたものになります。

これは、デザイナーがインスタンスの初期化値を変更しないためです。

4

1 に答える 1

0

すべてのインスタンスおよびインスタンスごとに共通のプロパティを作成するには、次のようにします。

class MyObject
{
    // static members are common to all instances
    static string DefaultProperty1 = "Some Default";

    private string _Property1;
    public string Property1
    {
        get
        {
            // If the backing field is NULL, return the default
            if (_Property1 == null)
                return DefaultProperty1;
            // Otherwise, return the per-instance value
            return _Property1;
        }
        set { _Property1 = value; }
    }
}

変更可能にしたい場合は、DefaultProperty1 をプロパティにすることもできます。

于 2012-11-02T18:22:39.850 に答える