您必須完成某些工作,讓自訂控制項能夠在第三方應用程式中裝載控制項時保存應用程式設定。
大部分有關應用程式設定功能的文件都是根據您建立獨立應用程式的假設而撰寫的。 不過,如果您要建立其他開發人員在其應用程式中裝載的控制項,您需要採取一些額外的步驟,讓控制項能夠正確保存其設定。
應用程式設定和自訂控制項
若要讓控制項正確儲存其設定,它必須透過建立自己的專用應用程式設定包裝類別(衍生自ApplicationSettingsBase)來封裝該過程。 此外,主要控制類別必須實作IPersistComponentSettings。 介面包含數個屬性,以及兩個方法,LoadComponentSettings 和 SaveComponentSettings。 如果您在 Visual Studio 中使用 Windows Forms Designer 將控制項新增至表單,Windows Forms 在初始化控制項時會自動呼叫 LoadComponentSettings;而您必須在控制項的 Dispose 方法中自行呼叫 SaveComponentSettings。
此外,您應該實作下列項目,讓自訂控制項的應用程式設定在 Visual Studio 等設計階段環境中正常運作:
具有建構函式且接受 IComponent 作為單一參數的自訂應用程式設定類別。 使用此類別來儲存和載入您所有的應用程式設定。 當您建立這個類別的新實例時,請使用建構函式來傳遞自訂控制項。
在已建立控制項並將其放置到表單上之後,建立此自訂設定類(例如在表單的
事件處理常式中)。
如需建立自訂設定類別的指示,請參閱「如何:建立應用程式設定」。
設定金鑰和共享設定
某些控制項可以在相同表單內多次使用。 大部分時候,您會想要這些控制項保存自己的個別設定。 使用 IPersistComponentSettings 上的 SettingsKey 屬性,您可以提供一個唯一的字串,這有助於辨別表單上多個版本的控制項。
最簡單的方式來實作 SettingsKey,是使用控制項的 Name 屬性作為 SettingsKey。 當您載入或儲存控制項的設定時,會將 SettingsKey 的值傳遞給 SettingsKey 屬性,該屬性屬於 ApplicationSettingsBase 類別。 應用程式設定將使用者的設定保存到 XML 時,會使用此唯一索引鍵。 下列程式碼範例示範 <userSettings> 區段如何呈現名為 CustomControl1 的自訂控制項實例,以儲存其 Text 屬性的設定。
<userSettings>
<CustomControl1>
<setting name="Text" serializedAs="string">
<value>Hello, World</value>
</setting>
</CustomControl1>
</userSettings>
未提供值給 SettingsKey 的任何控制項實例都會共用相同的設定。