Параметры приложения для пользовательских элементов управленияApplication Settings for Custom Controls

Необходимо выполнить определенные задачи, чтобы предоставить настраиваемым элементам управления возможность сохранять параметры приложения при размещении элементов управления в сторонних приложениях.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.

Большая часть документации о параметрах приложения записывается с учетом предположения о создании автономного приложения.Most of the documentation about the Application Settings feature is written under the assumption that you are creating a standalone application. Однако при создании элемента управления, который другие разработчики будут размещать в своих приложениях, необходимо выполнить несколько дополнительных действий, чтобы элемент управления правильно сохранял свои параметры.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.

Параметры приложения и пользовательские элементы управленияApplication Settings and Custom Controls

Чтобы ваш элемент управления правильно сохранял свои параметры, он должен инкапсулировать процесс, создав собственный класс-оболочку с параметрами выделенных приложений, производный от 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. Кроме того, главный класс элементов управления должен реализовывать IPersistComponentSettings.Additionally, the main control class must implement the IPersistComponentSettings. Интерфейс содержит несколько свойств, а также два метода, LoadComponentSettings и. SaveComponentSettingsThe interface contains several properties as well as two methods, LoadComponentSettings and SaveComponentSettings. При добавлении элемента управления в форму с помощью конструктор Windows Forms в Visual Studio Windows Forms будет вызываться LoadComponentSettings автоматически при инициализации элемента управления; необходимо Dispose вызвать SaveComponentSettings себя в методе элемента управления.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.

Кроме того, для правильной работы пользовательских элементов управления в средах разработки, таких как 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. Пользовательский класс параметров приложения с конструктором, принимающим IComponent в качестве одного параметра.A custom application settings class with a constructor that takes an IComponent as a single parameter. Этот класс используется для сохранения и загрузки всех параметров приложения.Use this class to save and load all of your application settings. При создании нового экземпляра этого класса передайте пользовательский элемент управления с помощью конструктора.When you create a new instance of this class, pass your custom control using the constructor.

  2. Создайте этот класс настраиваемых параметров после создания и размещения элемента управления в форме, например в обработчике Load событий формы.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.

Инструкции по созданию класса пользовательских параметров см. в разделе как Создание параметровприложения.For instructions on creating a custom settings class, see How to: Create Application Settings.

Параметры ключи и общие параметрыSettings Keys and Shared Settings

Некоторые элементы управления могут использоваться несколько раз в одной форме.Some controls can be used multiple times within the same form. В большинстве случаев эти элементы управления должны сохранять свои индивидуальные параметры.Most of the time, you will want these controls to persist their own individual settings. С помощью IPersistComponentSettingsсвойства в можно указать уникальную строку, которая действует для устранения неоднозначности нескольких версий элемента управления в форме. SettingsKeyWith the SettingsKey property on IPersistComponentSettings, you can supply a unique string that acts to disambiguate multiple versions of a control on a form.

Самым простым способом реализации SettingsKey является Name использование свойства элемента управления для SettingsKey.The simplest way to implement SettingsKey is to use the Name property of the control for the SettingsKey. При загрузке или сохранении параметров элемента управления значение SettingsKey SettingsKey параметра передается свойству ApplicationSettingsBase класса.When you load or save the control's settings, you pass the value of SettingsKey on to the SettingsKey property of the ApplicationSettingsBase class. Параметры приложения используют этот уникальный ключ, если он сохраняет параметры пользователя в XML.Application Settings uses this unique key when it persists the user's settings to XML. В следующем примере кода показано, как <userSettings> раздел может искать экземпляр пользовательского элемента управления с именем CustomControl1 , который сохраняет параметр для его Text свойства.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>

Все экземпляры элемента управления, которые не предоставляют значение для SettingsKey , будут совместно использовать одни и те же параметры.Any instances of a control that do not supply a value for SettingsKey will share the same settings.

См. такжеSee also