Übersicht über AnwendungseinstellungenApplication Settings Overview

In diesem Thema wird erläutert, wie Einstellungsdaten für Ihre Anwendung und deren Benutzer erstellt und gespeichert werden.This topic discusses how to create and store settings data on behalf of your application and your users.

Die Funktion „Anwendungseinstellungen“ von Windows Forms erleichtert das Erstellen, Speichern und Verwalten von benutzerdefinierten Einstellungen für Anwendungen und Benutzer auf dem Clientcomputer.The Application Settings feature of Windows Forms makes it easy to create, store, and maintain custom application and user preferences on the client computer. Mit Windows Forms-Anwendungseinstellungen können Sie nicht nur Anwendungsdaten wie Datenbankverbindungszeichenfolgen, sondern auch benutzerspezifische Daten, etwa Anwendungseinstellungen, speichern.With Windows Forms application settings, you can store not only application data such as database connection strings, but also user-specific data, such as user application preferences. Mithilfe von Visual Studio oder benutzerdefiniertem verwaltetem Code können Sie neue Einstellungen erstellen, diese vom Datenträger lesen bzw. sie darauf schreiben, sie an Eigenschaften in Ihren Formularen binden und Einstellungsdaten vor dem Laden und Speichern überprüfen.Using Visual Studio or custom managed code, you can create new settings, read them from and write them to disk, bind them to properties on your forms, and validate settings data prior to loading and saving.

Anwendungseinstellungen ermöglicht Entwicklern das Speichern des Zustands Ihrer jeweiligen Anwendung mit sehr wenig benutzerdefiniertem Code und ist ein Ersatz für dynamische Eigenschaften in früheren Versionen von .NET Framework.Application settings enables developers to save state in their application using very little custom code, and is a replacement for dynamic properties in previous versions of the .NET Framework. Anwendungseinstellungen enthalten zahlreiche Verbesserungen gegenüber dynamischen Eigenschaften, die schreibgeschützt und spät gebunden sind sowie mehr benutzerdefinierte Programmierung erfordern.Application settings contains many improvements over dynamic properties, which are read-only, late-bound, and require more custom programming. Die dynamischen Eigenschaftenklassen wurden in .NET Framework 2.0.NET Framework 2.0beibehalten, sind aber nur noch Shell-Klassen, die nur einen schwachen Wrapper für die Anwendungseinstellungen-Klassen darstellen.The dynamic property classes have been retained in .NET Framework 2.0.NET Framework 2.0, but they are just shell classes that thinly wrap the application settings classes.

Was sind Anwendungseinstellungen?What Are Application Settings?

Ihr Windows Forms-Anwendungen benötigen häufig Daten, die für die Ausführung der Anwendung von entscheidender Bedeutung sind, die Sie aber nicht direkt in den Anwendungscode einschließen möchten.Your Windows Forms applications will often require data that is critical to running the application, but which you do not want to include directly in the application's code. Wenn Ihre Anwendung einen Webdienst oder einen Datenbankserver verwendet, sollten Sie diese Informationen in einer separaten Datei speichern, damit Sie sie später ändern können, ohne sie neu kompilieren zu müssen.If your application uses a Web Service or a database server, you may want to store this information in a separate file, so that you can change it in the future without re-compiling. Auf ähnliche Weise können Ihre Anwendungen die Speicherung von Daten erfordern, die für den aktuellen Benutzer spezifisch sind.Similarly, your applications may require storing data that is specific to the current user. Die meisten Anwendungen verfügen beispielsweise über Benutzereinstellungen, die das Aussehen und Verhalten der Anwendung anpassen.Most applications, for example, have user preferences that customize the application's appearance and behavior.

Anwendungseinstellungen tragen beiden dieser Anforderungen Rechnung, indem sie eine einfache Möglichkeit bereitstellen, um sowohl anwendungsspezifische als auch benutzerspezifische Einstellungen auf dem Clientcomputer zu speichern.Application settings addresses both needs by providing an easy way to store both application-scoped and user-scoped settings on the client computer. Mithilfe von Visual Studio oder einem Code-Editor definieren Sie eine Einstellung für eine bestimmte Eigenschaft durch Angabe ihres Namens, Datentyps und Gültigkeitsbereichs (Anwendung oder Benutzer).Using Visual Studio or a code editor, you define a setting for a given property by specifying its name, data type, and scope (application or user). Sie können sogar verwandte Einstellungen in benannten Gruppen ablegen, um ihre Verwendbarkeit und Lesbarkeit zu vereinfachen.You can even place related settings into named groups for easier use and readability. Nachdem diese Einstellungen definiert wurden, werden sie dauerhaft gespeichert und zur Laufzeit automatisch zurück in den Speicher gelesen.Once defined, these settings are persisted and read back into memory automatically at run time. Eine Architektur mit austauschbaren Komponenten ermöglicht die Änderung des Mechanismus für die dauerhafte Speicherung, doch standardmäßig wird das lokale Dateisystem verwendet.A pluggable architecture enables the persistence mechanism to be changed, but by default, the local file system is used.

Anwendungseinstellungen funktionieren so, dass sie Daten als XML in unterschiedlichen Konfigurationsdateien (.config) dauerhaft speichern, je nachdem, ob die Einstellung anwendungsspezifisch oder benutzerspezifisch ist.Application settings works by persisting data as XML to different configuration (.config) files, corresponding to whether the setting is application-scoped or user-scoped. In den meisten Fällen sind die anwendungsspezifischen Einstellungen schreibgeschützt. Da es sich dabei um Programminformationen handelt, müssen Sie sie in der Regel nicht überschreiben.In most cases, the application-scoped settings are read-only; because they are program information, you will typically not need to overwrite them. Im Gegensatz dazu können benutzerspezifische Einstellungen zur Laufzeit problemlos gelesen und geschrieben werden, auch wenn Ihre Anwendung nur mit teilweiser Vertrauenswürdigkeit ausgeführt wird.By contrast, user-scoped settings can be read and written safely at run time, even if your application runs under partial trust. Weitere Informationen zu teilweiser Vertrauenswürdigkeit finden Sie unter Übersicht über die Sicherheit in Windows Forms.For more information about partial trust, see Security in Windows Forms Overview.

Einstellungen werden als XML-Fragmente in Konfigurationsdateien gespeichert.Settings are stored as XML fragments in configuration files. Anwendungsspezifische Einstellungen werden durch das <application.Settings> -Element dargestellt und normalerweise in " App.exe.config" abgelegt, wobei App der Name Ihrer Hauptausführungsdatei ist.Application-scoped settings are represented by the <application.Settings> element, and generally are placed in app.exe.config, where app is the name of your main executable file. Benutzerspezifische Einstellungen werden durch das <userSettings> -Element dargestellt und in " Benutzer.config" abgelegt, wobei Benutzer der Benutzername der Person ist, die aktuell die Anwendung ausführt.User-scoped settings are represented by the <userSettings> element and are placed in user.config, where user is the user name of the person currently running the application. Sie müssen die Datei " App.exe.config" mit Ihrer Anwendung bereitstellen. Die Architektur der Einstellungen erstellt die " Benutzer.config"-Dateien bei Bedarf, wenn die Anwendung Einstellungen für diesen Benutzer zum erste Mal speichert.You must deploy the app.exe.config file with your application; the settings architecture will create the user.config files on demand the first time the application saves settings for that user. Außerdem können Sie einen <userSettings> -Block in " App.exe.config" definieren, um Standardwerte für benutzerspezifische Einstellungen bereitzustellen.You can also define a <userSettings> block within app.exe.config to provide default values for user-scoped settings.

Benutzerdefinierte Steuerelemente können ihre eigenen Einstellungen auch speichern, indem die IPersistComponentSettings -Schnittstelle implementiert wird, die die SaveSettings -Methode verfügbar macht.Custom controls can also save their own settings by implementing the IPersistComponentSettings interface, which exposes the SaveSettings method. Das Windows Forms-Steuerelement ToolStrip implementiert diese Schnittstelle, um die Position von Symbolleisten und Symbolleistenelementen zwischen Anwendungssitzungen zu speichern.The Windows Forms ToolStrip control implements this interface to save the position of toolbars and toolbar items between application sessions. Weitere Informationen zu benutzerdefinierten Steuerelementen und Anwendungseinstellungen finden Sie unter Application Settings for Custom Controls.For more information about custom controls and application settings, see Application Settings for Custom Controls.

Einschränkungen von AnwendungseinstellungenLimitations of Application Settings

Sie können keine Anwendungseinstellungen in einer nicht verwalteten Anwendung, die von .NET Framework gehostet verwenden.You cannot use application settings in an unmanaged application that hosts the .NET Framework. Einstellungen funktionieren nicht in Umgebungen wie Visual Studio-Add-Ins, C++ für Microsoft Office, Steuerelementhosting in Internet Explorer oder Microsoft Outlook-Add-Ins und Projekte.Settings will not work in such environments as Visual Studio add-ins, C++ for Microsoft Office, control hosting in Internet Explorer, or Microsoft Outlook add-ins and projects.

Sie können derzeit keine Bindung an einige Eigenschaften in Windows Forms durchführen.You currently cannot bind to some properties in Windows Forms. Das bemerkenswerteste Beispiel ist die ClientSize -Eigenschaft, weil das Binden an diese Eigenschaft zu unvorhersehbarem Verhalten zur Laufzeit führen würde.The most notable example is the ClientSize property, as binding to this property would cause unpredictable behavior at run time. Sie können diese Probleme in der Regel umgehen, indem Sie diese Einstellungen programmgesteuert speichern und laden.You can usually work around these issues by saving and loading these settings programmatically.

Anwendungseinstellungen besitzen keine integrierte Funktion zum automatischen Verschlüsseln von Informationen.Application settings has no built-in facility for encrypting information automatically. Sie sollten nie sicherheitsrelevante Informationen wie Datenbankkennwörter in Klartext speichern.You should never store security-related information, such as database passwords, in clear text. Wenn Sie solche vertraulichen Informationen speichern möchten, sind Sie als Entwickler dafür verantwortlich, dass sie geschützt werden.If you want to store such sensitive information, you as the application developer are responsible for making sure it is secure. Wenn Sie Verbindungszeichenfolgen speichern möchten, empfehlen wir Ihnen, die integrierte Sicherheit von Windows zu verwenden und nicht zur Hartcodierung von Kennwörtern in der URL zu greifen.If you want to store connection strings, we recommend that you use Windows Integrated Security and not resort to hard-coding passwords into the URL. Weitere Informationen finden Sie unter Codezugriffssicherheit und ADO.NET.For more information, see Code Access Security and ADO.NET.

Erste Schritte mit AnwendungseinstellungenGetting Started with Application Settings

Wenn Sie Visual Studio verwenden, können Sie im Windows Forms-Designer mithilfe der (ApplicationSettings) -Eigenschaft im Fenster Eigenschaften Einstellungen definieren.If you use Visual Studio, you can define settings within the Windows Forms Designer using the (ApplicationSettings) property in the Properties window. Wenn Sie Einstellungen auf diese Weise definieren, erstellt Visual Studio automatisch eine benutzerdefinierte, verwaltete Wrapperklasse, die jede Einstellung einer Klasseneigenschaft zuordnet.When you define settings this way, Visual Studio automatically creates a custom managed wrapper class which associates each setting with a class property. Visual Studio übernimmt außerdem das Binden der Einstellung an eine Eigenschaft in einem Formular oder Steuerelement, damit die Einstellungen des Steuerelements automatisch wiederhergestellt werden, wenn sein Formular angezeigt wird, und automatisch gespeichert werden, wenn das Formular geschlossen wird.Visual Studio also takes care of binding the setting to a property on a form or control so that the control's settings are restored automatically when its form is displayed, and saved automatically when the form is closed.

Wenn Sie eine detailliertere Kontrolle über Ihre Einstellungen benötigen, können Sie Ihre eigene benutzerdefinierte Wrapperklasse für Anwendungseinstellungen definieren.If you want more detailed control over your settings, you can define your own custom applications settings wrapper class. Dies geschieht durch Ableiten einer Klasse von ApplicationSettingsBase, Hinzufügen einer Eigenschaft, die jeder Einstellung entspricht, und Anwenden bestimmter Attribute auf diese Eigenschaften.This is accomplished by deriving a class from ApplicationSettingsBase, adding a property that corresponds to each setting, and applying special attributes to these properties. Weitere Informationen zum Erstellen von Wrapperklassen finden Sie unter Application Settings Architecture.For details about creating wrapper classes, see Application Settings Architecture.

Sie können auch die Binding -Klasse verwenden, um Einstellungen programmgesteuert an Eigenschaften in Formularen und Steuerelementen zu binden.You can also use the Binding class to bind settings programmatically to properties on forms and controls.

Siehe auchSee also