Anwendungseinstellungen für benutzerdefinierte Steuerelemente

Sie müssen bestimmte Aufgaben ausführen, um Ihren benutzerdefinierten Steuerelementen die Möglichkeit zu geben, Anwendungseinstellungen beizubehalten, wenn die Steuerelemente in Drittanbieteranwendungen gehostet werden.

Der Großteil der Dokumentation zum Feature „Anwendungseinstellungen“ wurde unter der Annahme geschrieben, dass Sie eine eigenständige Anwendung erstellen. Wenn Sie jedoch ein Steuerelement erstellen, das andere Entwickler in ihren Anwendungen hosten werden, müssen Sie ein paar zusätzliche Schritte ausführen, damit Ihr Steuerelement seine Einstellungen ordnungsgemäß beibehalten kann.

Anwendungseinstellungen und benutzerdefinierte Steuerelemente

Damit Ihr Steuerelement seine Einstellungen ordnungsgemäß beibehalten kann, muss es den Prozess kapseln, indem es seine eigene dedizierte Anwendungseinstellungen-Wrapperklasse erstellt, die von ApplicationSettingsBase abgeleitet wird. Darüber hinaus muss die Hauptsteuerelementklasse die IPersistComponentSettings implementieren. Die Schnittstelle enthält mehrere Eigenschaften sowie zwei Methoden, LoadComponentSettings und SaveComponentSettings. Wenn Sie Ihr Steuerelement mit dem Windows Forms-Designer in Visual Studio einem Formular hinzufügen, ruft Windows Forms automatisch LoadComponentSettings auf, wenn das Steuerelement initialisiert wird. Sie müssen SaveComponentSettings selbst in der Dispose-Methode Ihres Steuerelements aufrufen.

Darüber hinaus sollten Sie Folgendes implementieren, damit Anwendungseinstellungen für benutzerdefinierte Steuerelemente in Entwurfszeitumgebungen wie Visual Studio ordnungsgemäß funktionieren:

  1. Eine benutzerdefinierte Anwendungseinstellungenklasse mit einem Konstruktor, der eine IComponent als einzigen Parameter akzeptiert. Verwenden Sie diese Klasse, um alle Anwendungseinstellungen zu speichern und zu laden. Wenn Sie eine neue Instanz dieser Klasse erstellen, übergeben Sie Ihr benutzerdefiniertes Steuerelement mithilfe des Konstruktors.

  2. Erstellen Sie diese benutzerdefinierte Einstellungsklasse, nachdem das Steuerelement erstellt und auf einem Formular platziert wurde, z. B. im Load-Ereignishandler des Formulars.

Anleitungen zum Erstellen einer benutzerdefinierten Einstellungsklasse finden Sie unter Vorgehensweise: Erstellen von Anwendungseinstellungen.

Einstellungsschlüssel und gemeinsame Einstellungen

Einige Steuerelemente können mehrmals innerhalb desselben Formulars verwendet werden. Meistens sollen diese Steuerelemente ihre eigenen individuellen Einstellungen beibehalten. Mit der SettingsKey-Eigenschaft für IPersistComponentSettings können Sie eine eindeutige Zeichenfolge bereitstellen, die der Disambiguierung mehrerer Versionen eines Steuerelements in einem Formular dient.

Die einfachste Weise zum Implementieren von SettingsKey ist die Verwendung der Name-Eigenschaft des Steuerelements für SettingsKey. Wenn Sie die Einstellungen des Steuerelements laden oder speichern, übergeben Sie den Wert von SettingsKey an die SettingsKey-Eigenschaft der ApplicationSettingsBase-Klasse. Die Anwendungseinstellungen verwenden diesen eindeutigen Schlüssel, wenn er die Einstellungen des Benutzers dauerhaft in XML beibehält. Im folgenden Codebeispiel wird gezeigt, wie ein <userSettings>-Abschnitt für eine Instanz eines benutzerdefinierten Steuerelements namens CustomControl1 aussehen kann, das eine Einstellung für seine Text-Eigenschaft speichert.

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

Alle Instanzen eines Steuerelements, die keinen Wert für SettingsKey bereitstellen, verwenden gemeinsam dieselben Einstellungen.

Weitere Informationen