Dela via


Översikt över programinställningar

I den här artikeln beskrivs hur du skapar och lagrar inställningsdata för ditt program och dina användare.

Funktionen Programinställningar i Windows Forms gör det enkelt att skapa, lagra och underhålla anpassade program- och användarinställningar på klientdatorn. Med programinställningar för Windows Forms kan du lagra inte bara programdata, till exempel databasanslutningssträngar, utan även användarspecifika data, till exempel inställningar för användarprogram. Med Hjälp av Visual Studio eller anpassad hanterad kod kan du skapa nya inställningar, läsa dem från och skriva dem till disk, binda dem till egenskaper i dina formulär och verifiera inställningsdata innan du läser in och sparar dem.

Programinställningar gör det möjligt för utvecklare att spara tillstånd i sitt program med mycket lite anpassad kod och är en ersättning för dynamiska egenskaper i tidigare versioner av .NET Framework. Programinställningarna innehåller många förbättringar jämfört med dynamiska egenskaper, som är skrivskyddade, senbundna och kräver mer skräddarsydd programmering. De dynamiska egenskapsklasserna har bevarats i .NET Framework 2.0, men de är bara skalklasser som tunt omsluter programinställningsklasserna.

Vad är programinställningar?

Dina Windows Forms-program kräver ofta data som är viktiga för att köra programmet, men som du inte vill inkludera direkt i programmets kod. Om ditt program använder en webbtjänst eller en databasserver kanske du vill lagra den här informationen i en separat fil, så att du kan ändra den i framtiden utan att kompilera om den. På samma sätt kan dina program kräva att data som är specifika för den aktuella användaren lagras. De flesta program har till exempel användarinställningar som anpassar programmets utseende och beteende.

Programinställningar tillgodoser båda behoven genom att tillhandahålla ett enkelt sätt att lagra både inställningar med programomfattning och användaromfattning på klientdatorn. Med Hjälp av Visual Studio eller en kodredigerare definierar du en inställning för en viss egenskap genom att ange dess namn, datatyp och omfång (program eller användare). Du kan till och med placera relaterade inställningar i namngivna grupper för enklare användning och läsbarhet. När de här inställningarna har definierats sparas de och läss tillbaka till minnet automatiskt vid körning. Med en anslutningsbar arkitektur kan beständighetsmekanismen ändras, men som standard används det lokala filsystemet.

Programinställningar fungerar genom att spara data som XML till olika konfigurationsfiler (.config) beroende på om inställningen är programspecifik eller användarspecifik. I de flesta fall är de programomfattande inställningarna skrivskyddade. eftersom de är programinformation behöver du vanligtvis inte skriva över dem. Däremot kan inställningar med användaromfattning läsas och skrivas på ett säkert sätt vid körning, även om programmet körs under begränsat förtroende. Mer information om partiellt förtroende finns i Säkerhet i Översikt över Windows-formulär.

Inställningarna lagras som XML-fragment i konfigurationsfiler. Inställningar med programomfattning representeras av elementet <applicationSettings> och placeras vanligtvis i app.exe.config, där app är namnet på den körbara huvudfilen. Inställningar med användaromfattning representeras av elementet <userSettings> och placeras i user.config. Du måste distribuera app.exe.config-filen med ditt program. inställningsarkitekturen skapar den user.config filen på begäran första gången programmet sparar inställningar för användaren. Du kan också definiera ett <userSettings> block i app.exe.config för att ange standardvärden för användarspecifika inställningar.

Anpassade kontroller kan också spara sina egna inställningar genom att implementera IPersistComponentSettings-gränssnittet, som exponerar SaveSettings-metoden. Kontrollen Windows Forms ToolStrip implementerar det här gränssnittet för att spara positionen för verktygsfält och verktygsfältsobjekt mellan programsessioner. Mer information om anpassade kontroller och programinställningar finns i Programinställningar för anpassade kontroller.

Var lagras inställningar som gäller användaren

Standardprovidern, LocalFileSettingsProvider, lagrar användaromfattande inställningar i mappen LocalApplicationData. Om mappen inte är tillgänglig används mappen ApplicationData. En appspecifik undermapp skapas för att lagra den användarspecifika inställningsfilen. Namnet på den här mappen baseras på tre attribut om appens huvudsakliga sammansättning:

  • Sammansättningens CompanyName.
  • Ett hashvärde baserat på två informationsdelar:
    • Sammansättningens FriendlyName. Om FriendlyName inte är tillgängligt används ProductName.
    • Sammansättningens StrongName används om den är tillgänglig, annars används den absoluta mappsökvägen till sammansättningen.
  • Strängen AssemblyName.Version.

Om någon av föregående sammansättningsinformation ändras går de tidigare inställningarna för användaromfattning förlorade eftersom ett nytt undermappsnamn genereras. Om till exempel en ny version av appen släpps och värdet AssemblyName.Version skiljer sig från den tidigare versionen ändras namnet på den undermapp som används för att lagra de användaromfattande inställningarna. Om användarinställningarna måste sparas mellan appversioner skapar du en leverantör för anpassade inställningar. Mer information finns i leverantörer för anpassade inställningar.

Begränsningar i programinställningar

Du kan inte använda programinställningar i ett ohanterat program som kör .NET Framework. Inställningarna fungerar inte i miljöer som Visual Studio-tillägg, C++ för Microsoft Office, kontroll av värdtjänster i Internet Explorer eller Microsoft Outlook-tillägg och -projekt.

Du kan för närvarande inte binda till vissa egenskaper i Windows Forms. Det mest anmärkningsvärda exemplet är egenskapen ClientSize eftersom bindning till den här egenskapen skulle orsaka oförutsägbart beteende vid körning. Du kan vanligtvis kringgå dessa problem genom att spara och läsa in de här inställningarna programmatiskt.

Programinställningar har ingen inbyggd funktion för att kryptera information automatiskt. Du bör aldrig lagra säkerhetsrelaterad information, till exempel databaslösenord, i klartext. Om du vill lagra sådan känslig information ansvarar du som programutvecklare för att se till att den är säker. Om du vill lagra anslutningssträngar rekommenderar vi att du använder Windows Integrated Security och inte använder hårdkodade lösenord i URL:en. Mer information finns i Code Access Security och ADO.NET.

Komma igång med programinställningar

Om du använder Visual Studio kan du definiera inställningar i Windows Forms Designer med hjälp av egenskapen (ApplicationSettings) i fönstret Egenskaper. När du definierar inställningar på det här sättet skapar Visual Studio automatiskt en anpassad hanterad omslutningsklass som associerar varje inställning med en klassegenskap. Visual Studio tar också hand om att binda inställningen till en egenskap i ett formulär eller en kontroll så att kontrollens inställningar återställs automatiskt när formuläret visas och sparas automatiskt när formuläret stängs.

Om du vill ha mer detaljerad kontroll över inställningarna kan du definiera din egen omslutningsklass för anpassade programinställningar. Detta uppnås genom att härleda en klass från ApplicationSettingsBase, lägga till en egenskap som motsvarar varje inställning och tillämpa särskilda attribut på dessa egenskaper. Mer information om hur du skapar omslutningsklasser finns i Arkitektur för programinställningar.

Du kan också använda klassen Binding för att binda inställningar programmatiskt till egenskaper för formulär och kontroller.

Se även