Главная » C#, Компоненты » Настраиваемые свойства

0

Очень часто свойства компонента одновременно оказываются и настройками программы или системы. Например, свойства PortName и BaudRate компонента SerialPort, очевидно, являются настройками системы. Было бы очень неудобно хранить эти настройки в коде программы и перекомпилировать ее при изменении номера порта или скорости обмена.

Один из вариантов— реализовать собственный интерфейс для редактирования таких настроек. Это несложно, но не всегда нужно. Часто вполне достаточно простого хранения настроек в конфигурационном файле, без возможности его редактирования из программы. Вполне подойдет даже обычный конфигурационный файл app.config.

Рис. 10.6. Свойство (ApplicationSettings)

Среда Visual Studio предоставляет очень удобную возможность автоматического сохранения значения свойств в конфигурационный файл. Каждый компонент имеет специальное виртуальное (т. е. доступное только в режиме разработки) свойство (ApplicationSettings), которое находится в секции Data (рис. 10.6). Редактор вложенного свойства (PropertyBinding) позволяет задать соответствие свойств компонента и секций в конфигурационном файле (рис. 10.7).

Рис. 10.7. Редактор свойства (PropertyBinding)

После привязки свойств PortName и BaudRate сериализованный КОД ВЫГЛЯДИТ следующим образом:

Chis.serialPortl = new System.10.Ports.SerialPort(this.components); this.serialPortl.BaudRate =

global::Test.Properties.Settings.Default.BaudRate; Chis.serialPortl.PortName = global::Test.Properties.Settings.Default.PortName;

А файл конфигурации выглядит так:

<?xml version="l.0" encoding="utf-8" ?> <conf iguration>

<configSections>

</configSections> <userSettings>

<Test.Properties.Settings>

<setting name="BaudRate" serializeAs="String">

<value> 9600</value> </setting>

<setting name="PortName" serializeAs="String">

<value>C0Ml</vaiue> </setting> </Test.Properties.Settings> </userSettings> </configuration>

Конечно, такой простой интерфейс редактирования настроек программы подходит не всегда, но часто он позволяет существенно сэкономить время разработки, если простого файла конфигурации достаточно и нет необходимости создавать специальные диалоги редактирования.

Несколько слов про еще один полезный атрибут. Если разработчик считает, что некоторое свойство было бы хорошо вынести в настройки приложения, ОН может сообщить об ЭТОМ, установив атрибут SettingsBindable(true) ‘:

[SettingsBindable(true) ]

public TestProperty TestProperty

{

get { return testProperty; } sec { testProperty = value; }

1

Теперь такое свойство будет сразу вынесено в секцию Data рядом со свойством PropertyBinding (рис. 10.8).

Рис. 10.8. Свойство, рекомендованное для настройки

Литература:

Агуров П. В. C#. Разработка компонентов в MS Visual Studio 2005/2008. – СПб.: БХВ-Петербург, 2008. — 480 е.: ил.

По теме:

  • Комментарии