カスタム コントロールのアプリケーション設定
カスタム コントロールがサードパーティ アプリケーションでホストされる場合に、それらのコントロールがアプリケーション設定を永続化できるようにするには、特定のタスクを完了する必要があります。
アプリケーション設定機能に関するドキュメントのほとんどは、スタンドアロン アプリケーションを作成することを前提として記述されています。 ただし、作成しているコントロールが、他の開発者によるアプリケーションにホストされる場合は、コントロールが設定を適切に永続化するために、追加の手順をいくつか実行する必要があります。
アプリケーション設定とカスタム コントロール
コントロールが設定を適切に永続化するには、ApplicationSettingsBase から派生した独自の専用アプリケーション設定ラッパー クラスを作成して、プロセスをカプセル化する必要があります。 また、メイン コントロール クラスは IPersistComponentSettings を実装する必要があります。 インターフェイスには、いくつかのプロパティと共に LoadComponentSettings と SaveComponentSettings という 2 つのメソッドが含まれています。 Visual Studio の Windows フォーム デザイナーを使用してコントロールをフォームに追加した場合、コントロールが初期化されるときに Windows フォームによって LoadComponentSettings が自動的に呼び出されます。コントロールの Dispose
メソッドでは SaveComponentSettings を自分で呼び出す必要があります。
さらに、カスタム コントロールのアプリケーション設定が Visual Studio などのデザイン時環境で適切に機能するためには、次のものを実装する必要があります。
IComponent を 1 つのパラメーターとして受け取るコンストラクターを持つカスタム アプリケーション設定クラス。 このクラスを使用して、すべてのアプリケーション設定を保存して読み込みます。 このクラスの新しいインスタンスを作成するときは、コンストラクターを使用してカスタム コントロールを渡します。
このカスタム設定クラスは、フォームの Load イベント ハンドラーなどで、コントロールが作成されてフォームに配置された後で作成します。
カスタム設定クラスを作成する方法については、「方法: アプリケーション設定を作成する」を参照してください。
設定キーと共有設定
一部のコントロールは、同じフォーム内で複数回使用できます。 ほとんどの場合、これらのコントロールで個別の設定を永続化する必要があります。 IPersistComponentSettings で SettingsKey プロパティを使用して一意の文字列を指定することで、フォーム上のコントロールの複数のバージョンを明確に区別できます。
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 の値が提供されないコントロールのすべてのインスタンスは、同じ設定になります。
関連項目
.NET Desktop feedback