Impostazioni delle applicazioni per i controlli personalizzatiApplication Settings for Custom Controls

È necessario completare alcune attività per consentire ai controlli personalizzati di rendere persistenti le impostazioni dell'applicazione quando sono ospitati i controlli nelle applicazioni di terze parti.You must complete certain tasks to give your custom controls the ability to persist application settings when the controls are hosted in third-party applications.

La maggior parte della documentazione sulla funzionalità Impostazioni applicazione viene scritta presupponendo che si sta creando un'applicazione autonoma.Most of the documentation about the Application Settings feature is written under the assumption that you are creating a standalone application. Tuttavia, se si sta creando un controllo che ospitano altri sviluppatori nelle proprie applicazioni, è necessario eseguire alcuni passaggi aggiuntivi per il controllo per la persistenza delle impostazioni in modo corretto.However, if you are creating a control that other developers will host in their applications, you need to take a few additional steps for your control to persist its settings properly.

Le impostazioni dell'applicazione e i controlli personalizzatiApplication Settings and Custom Controls

Per il controllo in modo corretto la persistenza delle impostazioni, è necessario incapsulare il processo tramite la creazione di applicazioni dedicate classe wrapper di impostazioni, derivata da ApplicationSettingsBase.For your control to properly persist its settings, it must encapsulate the process by creating its own dedicated applications settings wrapper class, derived from ApplicationSettingsBase. Inoltre, è necessario implementare la classe principale del controllo di IPersistComponentSettings.Additionally, the main control class must implement the IPersistComponentSettings. L'interfaccia contiene diverse proprietà, nonché due metodi, LoadComponentSettings e SaveComponentSettings.The interface contains several properties as well as two methods, LoadComponentSettings and SaveComponentSettings. Se si aggiunge il controllo a un form utilizzando la Progettazione Windows Form in Visual Studio, Windows Form chiamerà LoadComponentSettings automaticamente quando il controllo è inizializzato; è necessario chiamare SaveComponentSettings manualmente nel Dispose metodo del controllo.If you add your control to a form using the Windows Forms Designer in Visual Studio, Windows Forms will call LoadComponentSettings automatically when the control is initialized; you must call SaveComponentSettings yourself in the Dispose method of your control.

Inoltre, è opportuno implementare le operazioni seguenti nell'ordine per le impostazioni dell'applicazione per i controlli personalizzati di funzionare correttamente in ambienti di progettazione, ad esempio Visual Studio:In addition, you should implement the following in order for application settings for custom controls to work properly in design-time environments such as Visual Studio:

  1. Una classe di impostazioni applicazione personalizzata con un costruttore che accetta un IComponent come un singolo parametro.A custom application settings class with a constructor that takes an IComponent as a single parameter. Utilizzare questa classe per salvare e caricare tutte le impostazioni dell'applicazione.Use this class to save and load all of your application settings. Quando si crea una nuova istanza della classe, passare il controllo personalizzato utilizzando il costruttore.When you create a new instance of this class, pass your custom control using the constructor.

  2. Creare la classe di impostazioni personalizzate dopo il controllo è stato creato e inserito in un form, ad esempio il formato Load gestore dell'evento.Create this custom settings class after the control has been created and placed on a form, such as in the form's Load event handler.

Per istruzioni sulla creazione di una classe di impostazioni personalizzate, vedere procedura: creare le impostazioni dell'applicazione.For instructions on creating a custom settings class, see How to: Create Application Settings.

Le chiavi delle impostazioni e le impostazioni condiviseSettings Keys and Shared Settings

Alcuni controlli possono essere utilizzate più volte nello stesso form.Some controls can be used multiple times within the same form. La maggior parte dei casi, si desidererà questi controlli per rendere persistenti le proprie impostazioni.Most of the time, you will want these controls to persist their own individual settings. Con il SettingsKey proprietà IPersistComponentSettings, è possibile fornire una stringa univoca che agisce per evitare ambiguità tra più versioni di un controllo in un form.With the SettingsKey property on IPersistComponentSettings, you can supply a unique string that acts to disambiguate multiple versions of a control on a form.

Il modo più semplice per implementare SettingsKey consiste nell'utilizzare il Name proprietà del controllo per il SettingsKey.The simplest way to implement SettingsKey is to use the Name property of the control for the SettingsKey. Quando si caricano o salvano le impostazioni del controllo, si passa il valore di SettingsKey al SettingsKey proprietà del ApplicationSettingsBase classe.When you load or save the control's settings, you pass the value of SettingsKey on to the SettingsKey property of the ApplicationSettingsBase class. Le impostazioni dell'applicazione utilizza questa chiave univoca per rendere persistenti le impostazioni dell'utente in formato XML.Application Settings uses this unique key when it persists the user's settings to XML. Nell'esempio di codice riportato di seguito viene illustrato come un <userSettings> sezione potrebbe essere per un'istanza di un controllo personalizzato denominato CustomControl1 che salva un'impostazione per il relativo Text proprietà.The following code example shows how a <userSettings> section may look for an instance of a custom control named CustomControl1 that saves a setting for its Text property.

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

Tutte le istanze di un controllo che non si specifica un valore per SettingsKey condividono le stesse impostazioni.Any instances of a control that do not supply a value for SettingsKey will share the same settings.

Vedere ancheSee Also

ApplicationSettingsBase
IPersistComponentSettings
Application Settings ArchitectureApplication Settings Architecture