Share via


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

カスタム コントロールがサードパーティ アプリケーションでホストされる場合に、それらのコントロールがアプリケーション設定を永続化できるようにするには、特定のタスクを完了する必要があります。

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

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

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

さらに、カスタム コントロールのアプリケーション設定が Visual Studio などのデザイン時環境で適切に機能するためには、次のものを実装する必要があります。

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

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

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

設定キーと共有設定

一部のコントロールは、同じフォーム内で複数回使用できます。 ほとんどの場合、これらのコントロールで個別の設定を永続化する必要があります。 IPersistComponentSettingsSettingsKey プロパティを使用して一意の文字列を指定することで、フォーム上のコントロールの複数のバージョンを明確に区別できます。

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

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

SettingsKey の値が提供されないコントロールのすべてのインスタンスは、同じ設定になります。

関連項目