Dela via


Programinställningar för anpassade kontroller

Du måste utföra vissa uppgifter för att ge dina anpassade kontroller möjlighet att spara programinställningar när kontrollerna finns i program från tredje part.

Merparten av dokumentationen om funktionen Programinställningar är skriven under antagandet att du skapar ett fristående program. Men om du skapar en kontroll som andra utvecklare kommer att vara värd för i sina program måste du vidta några ytterligare steg för att kontrollen ska bevara inställningarna korrekt.

Programinställningar och anpassade kontroller

För att kontrollen ska bevara inställningarna korrekt måste den kapsla in processen genom att skapa en egen omslutningsklass för dedikerade programinställningar, härledd från ApplicationSettingsBase. Dessutom måste huvudkontrollklassen implementera IPersistComponentSettings. Gränssnittet innehåller flera egenskaper samt två metoder, LoadComponentSettings och SaveComponentSettings. Om du lägger till kontrollen i ett formulär med hjälp av Windows Forms Designer i Visual Studio, anropar Windows Forms LoadComponentSettings automatiskt när kontrollen initieras; du måste själv anropa SaveComponentSettings i Dispose-metoden för din kontroll.

Dessutom bör du implementera följande för att programinställningar för anpassade kontroller ska fungera korrekt i designtidsmiljöer som Visual Studio:

  1. En anpassad programinställningsklass med en konstruktor som tar en IComponent som en enda parameter. Använd den här klassen för att spara och läsa in alla programinställningar. När du skapar en ny instans av den här klassen skickar du din anpassade kontroll med konstruktorn.

  2. Skapa den här klassen för anpassade inställningar när kontrollen har skapats och placerats i ett formulär, till exempel i formulärets Load händelsehanterare.

Anvisningar om hur du skapar en klass för anpassade inställningar finns i Så här skapar du programinställningar.

Inställningsnycklar och delade inställningar

Vissa kontroller kan användas flera gånger i samma formulär. För det mesta vill du att dessa kontroller ska bevara sina egna individuella inställningar. Med egenskapen SettingsKeyIPersistComponentSettingskan du ange en unik sträng som agerar för att skilja flera versioner av en kontroll i ett formulär.

Det enklaste sättet att implementera SettingsKey är att använda egenskapen Name för kontrollen för SettingsKey. När du läser in eller sparar kontrollens inställningar skickar du värdet för SettingsKey till egenskapen SettingsKey för klassen ApplicationSettingsBase. Programinställningar använder den här unika nyckeln när användarens inställningar sparas i XML. Följande kodexempel visar hur ett <userSettings> avsnitt kan leta efter en instans av en anpassad kontroll med namnet CustomControl1 som sparar en inställning för dess egenskap Text.

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

Alla instanser av en kontroll som inte anger ett värde för SettingsKey delar samma inställningar.

Se även