Overzicht van toepassingsinstellingen
In dit artikel wordt beschreven hoe u instellingengegevens maakt en opslaat namens uw toepassing en uw gebruikers.
Met de functie Toepassingsinstellingen van Windows Forms kunt u eenvoudig aangepaste toepassingen en gebruikersvoorkeuren maken, opslaan en onderhouden op de clientcomputer. Met toepassingsinstellingen voor Windows Forms kunt u niet alleen toepassingsgegevens opslaan, zoals databaseverbindingsreeksen, maar ook gebruikersspecifieke gegevens, zoals voorkeuren voor gebruikerstoepassingen. Met Visual Studio of aangepaste beheerde code kunt u nieuwe instellingen maken, ze lezen van en naar schijf schrijven, ze binden aan eigenschappen in uw formulieren en instellingengegevens valideren voordat ze worden geladen en opgeslagen.
Met toepassingsinstellingen kunnen ontwikkelaars de status in hun toepassing opslaan met zeer weinig aangepaste code. Dit is een vervanging voor dynamische eigenschappen in eerdere versies van .NET Framework. Toepassingsinstellingen bevatten veel verbeteringen ten opzichte van dynamische eigenschappen, die read-only zijn, late-bound en meer aangepaste programmering vereisen. De dynamische eigenschapsklassen zijn bewaard in .NET Framework 2.0, maar ze zijn alleen shellklassen die de toepassingsinstellingenklassen dun verpakken.
Wat zijn toepassingsinstellingen?
Uw Windows Forms-toepassingen vereisen vaak gegevens die essentieel zijn voor het uitvoeren van de toepassing, maar die u niet rechtstreeks in de code van de toepassing wilt opnemen. Als uw toepassing gebruikmaakt van een webservice of een databaseserver, kunt u deze gegevens opslaan in een afzonderlijk bestand, zodat u deze in de toekomst kunt wijzigen zonder opnieuw te compileren. Op dezelfde manier moeten uw toepassingen mogelijk gegevens opslaan die specifiek zijn voor de huidige gebruiker. De meeste toepassingen hebben bijvoorbeeld gebruikersvoorkeuren waarmee het uiterlijk en gedrag van de toepassing worden aangepast.
Toepassingsinstellingen voldoen aan beide behoeften door een eenvoudige manier te bieden om zowel toepassingsbereik- als gebruikersinstellingen op de clientcomputer op te slaan. Met Visual Studio of een code-editor definieert u een instelling voor een bepaalde eigenschap door de naam, het gegevenstype en het bereik op te geven (toepassing of gebruiker). U kunt zelfs gerelateerde instellingen in benoemde groepen plaatsen voor eenvoudiger gebruik en leesbaarheid. Zodra deze instellingen zijn gedefinieerd, blijven deze instellingen behouden en worden ze tijdens runtime automatisch in het geheugen gelezen. Met een pluggable-architectuur kan het persistentiemechanisme worden gewijzigd, maar standaard wordt het lokale bestandssysteem gebruikt.
Toepassingsinstellingen werken door gegevens als XML op te slaan in verschillende configuratiebestanden (.config) die overeenkomen met het feit of de instelling toepassingsbereik of gebruikersbereik heeft. In de meeste gevallen zijn de instellingen voor toepassingsbereik alleen-lezen; omdat het programmagegevens zijn, hoeft u ze doorgaans niet te overschrijven. Instellingen met gebruikersbereik kunnen daarentegen veilig worden gelezen en geschreven tijdens runtime, zelfs als uw toepassing wordt uitgevoerd onder gedeeltelijke vertrouwensrelatie. Zie Security in Windows Forms Overviewvoor meer informatie over gedeeltelijke vertrouwensrelatie.
Instellingen worden opgeslagen als XML-fragmenten in configuratiebestanden. Instellingen voor toepassingsbereik worden vertegenwoordigd door het element <applicationSettings>
en worden over het algemeen in app-.exe.configgeplaatst, waarbij app de naam is van het hoofdbestand van het uitvoerbare bestand. Instellingen voor gebruikersbereik worden vertegenwoordigd door het element <userSettings>
en worden in user.configgeplaatst. U moet het -app-.exe.config-bestand implementeren met uw toepassing; de instellingenarchitectuur maakt het user.config bestand op aanvraag de eerste keer dat de toepassing instellingen voor die gebruiker opslaat. U kunt ook een <userSettings>
blok definiëren binnen app.exe.config om standaardwaarden op te geven voor instellingen binnen het gebruikersbereik.
Aangepaste besturingselementen kunnen ook hun eigen instellingen opslaan door de IPersistComponentSettings-interface te implementeren, waarmee de SaveSettings methode wordt weergegeven. Het besturingselement Windows Forms ToolStrip implementeert deze interface om de positie van werkbalken en werkbalkitems tussen toepassingssessies op te slaan. Zie Toepassingsinstellingen voor aangepaste besturingselementenvoor meer informatie over aangepaste besturingselementen en toepassingsinstellingen.
Waar worden instellingen voor gebruikersbereik opgeslagen
De standaardprovider, LocalFileSettingsProvider, slaat instellingen met gebruikersbereik op in de map LocalApplicationData. Als deze map niet beschikbaar is, wordt de ApplicationData map gebruikt. Er wordt een app-specifieke submap gemaakt om het gebruikersspecifieke instellingenbestand op te slaan. De naam van deze map is gebaseerd op drie kenmerken van de belangrijkste assembly van de app:
- De CompanyNamevan de assemblage.
- Een gehashte waarde op basis van twee gegevens:
- De FriendlyNamevan de assemblage. Als
FriendlyName
niet beschikbaar is, wordt de ProductName gebruikt. - De StrongName van de assembly indien beschikbaar, anders wordt het absolute mappad voor de assembly gebruikt.
- De FriendlyNamevan de assemblage. Als
- De AssemblyName.Version tekenreeks.
Als een van de voorgaande assemblygegevens verandert, gaan de eerdere gebruiker-specifieke instellingen verloren omdat er een nieuwe submapnaam wordt gegenereerd. Als er bijvoorbeeld een nieuwe versie van de app wordt uitgebracht en de AssemblyName.Version
waarde verschilt van de vorige versie, verandert de naam van de submap die wordt gebruikt voor het opslaan van de instellingen met gebruikersbereik. Als gebruikersinstellingen tussen app-releases moeten blijven bestaan, maakt u een aangepaste instellingenprovider. Zie Aangepaste instellingenprovidersvoor meer informatie.
Beperkingen van toepassingsinstellingen
U kunt geen toepassingsinstellingen gebruiken in een niet-beheerde toepassing die als host fungeert voor .NET Framework. Instellingen werken niet in dergelijke omgevingen als Visual Studio-invoegtoepassingen, C++ voor Microsoft Office, het beheren van hosting in Internet Explorer of Microsoft Outlook-invoegtoepassingen en -projecten.
U kunt momenteel geen binding maken met bepaalde eigenschappen in Windows Forms. Het meest opvallende voorbeeld is de eigenschap ClientSize, omdat binding met deze eigenschap onvoorspelbaar gedrag zou veroorzaken tijdens runtime. U kunt deze problemen meestal omzeilen door deze instellingen programmatisch op te slaan en te laden.
Toepassingsinstellingen hebben geen ingebouwde faciliteit voor het automatisch versleutelen van gegevens. U moet nooit beveiligingsgerelateerde informatie, zoals databasewachtwoorden, opslaan in duidelijke tekst. Als u dergelijke gevoelige informatie wilt opslaan, bent u als de ontwikkelaar van de toepassing verantwoordelijk om ervoor te zorgen dat deze veilig is. Als u verbindingsreeksen wilt opslaan, raden we u aan geïntegreerde Windows-beveiliging te gebruiken en geen gebruik te maken van hardcoderingswachtwoorden in de URL. Zie Code Access Security en ADO.NETvoor meer informatie.
Aan de slag met toepassingsinstellingen
Als u Visual Studio gebruikt, kunt u instellingen definiëren in Windows Forms Designer met behulp van de eigenschap (ApplicationSettings) in het venster Eigenschappen. Wanneer u instellingen op deze manier definieert, maakt Visual Studio automatisch een aangepaste beheerde wrapperklasse die elke instelling koppelt aan een klasse-eigenschap. Visual Studio zorgt er ook voor dat de instelling wordt gekoppeld aan een eigenschap op een formulier of besturingselement, zodat de instellingen van het besturingselement automatisch worden hersteld wanneer het formulier wordt weergegeven en automatisch worden opgeslagen wanneer het formulier wordt gesloten.
Als u meer gedetailleerde controle wilt over uw instellingen, kunt u uw eigen aangepaste toepassingsinstellingen wrapperklasse definiëren. Dit wordt bereikt door een klasse te afleiden uit ApplicationSettingsBase, een eigenschap toe te voegen die overeenkomt met elke instelling en speciale kenmerken toe te passen op deze eigenschappen. Zie Architectuur voor toepassingsinstellingenvoor meer informatie over het maken van wrapperklassen.
U kunt de klasse Binding ook gebruiken om instellingen programmatisch te binden aan eigenschappen op formulieren en besturingselementen.
Zie ook
- ApplicationSettingsBase
- SettingsProvider
- LocalFileSettingsProvider
- IPersistComponentSettings
- Hoe te: Toepassingsinstellingen valideren
- Application Settings (.NET) beheren
- Instructies: Instellingen lezen tijdens runtime met C#
- Toepassingsinstellingen en gebruikersinstellingen gebruiken
- Architectuur van toepassingsinstellingen
- Toepassingsinstellingen voor aangepaste besturingselementen
.NET Desktop feedback