カスタム コントロールのアプリケーション設定

コントロールがサードパーティのアプリケーションでホストされている場合、アプリケーション設定を永続化するための機能をカスタム コントロールに持たせるには特定のタスクを完了する必要があります。

アプリケーション設定機能に関するほとんどのドキュメントは、スタンドアロン アプリケーションを作成していることを前提にしています。 ただし、他の開発者が作成したアプリケーション内でホストされるコントロールを作成する場合には、コントロールが設定を適切に永続化できるように、追加の手順を実行する必要があります。

アプリケーション設定とカスタム コントロール

コントロールで設定を適切に永続化できるようにするためには、ApplicationSettingsBase から派生した独自の専用アプリケーション設定ラッパー クラスを作成することによってプロセスをカプセル化する必要があります。 また、メイン コントロール クラスで IPersistComponentSettings を実装する必要があります。 このインターフェイスには、複数のプロパティと 2 つのメソッド (LoadComponentSettings および SaveComponentSettings) が含まれます。 Visual Studio の Windows フォーム デザイナーを使用してコントロールをフォームに追加する場合、コントロールの初期化時に、Windows フォームは自動的に LoadComponentSettings を呼び出します。SaveComponentSettings は、コントロールの Dispose メソッド内で独自に呼び出す必要があります。

また、カスタム コントロールのアプリケーション設定が Visual Studio などデザイン時の環境で正しく動作するように、次を実装する必要があります。

  1. IComponent を 1 つのパラメーターとして使用するコンストラクターを含む、カスタム アプリケーション設定クラス。 このクラスを使用して、すべてのアプリケーション設定を読み込みます。 このクラスの新しいインスタンスを作成するときに、コンストラクターを使用してカスタム コントロールを渡します。

  2. コントロールを作成し、フォームの Load イベント ハンドラーなどに配置した後に、カスタム設定クラスを作成します。

カスタム設定クラスを作成する手順については、「方法 : アプリケーション設定を作成する」を参照してください。

設定キーと共有設定

コントロールの中には、同じフォーム内で何度も使用できるものがあります。 ほとんどの場合、このようなコントロールが個々の設定を独自に永続化するように設定すると便利です。 IPersistComponentSettingsSettingsKey プロパティを使用すると、フォーム上のコントロールの複数のバージョンを区別する一意の文字列を指定できます。

SettingsKey を実装する最も簡単な方法は、コントロールの Name プロパティを SettingsKey に使用することです。 コントロールの設定を読み込むときまたは保存するときに、SettingsKey の値を ApplicationSettingsBase クラスの SettingsKey プロパティに渡します。 アプリケーション設定は、ユーザーの設定を XML ファイルに永続化するときにこの一意キーを使用します。 Text プロパティの設定を保存する CustomControl1 という名前のカスタム コントロールのインスタンスを <userSettings> セクションが検索するしくみを次のコード例に示します。

<userSettings>
    <CustomControl1>
        <setting name="Text" serializedAs="string">
            <value>Hello, World</value>
        </setting>
    </CustomControl1>
</userSettings>

SettingsKey の値を指定しないコントロールのすべてのインスタンスは、同じ設定を共有します。

参照

参照

ApplicationSettingsBase

IPersistComponentSettings

概念

アプリケーション設定アーキテクチャ