Практическое руководство. Проверка параметров приложения
В этом разделе показано, как проверить параметры приложения перед их сохранением.
Поскольку параметры приложений являются строго типизированными, это дает некоторую уверенность в том, что пользователи не могут назначить тому или иному параметру данные неверного типа. Тем не менее, пользователь по-прежнему может попытаться присвоить значение вне допустимого диапазона, наприме указать дату рождения в будущем. ApplicationSettingsBase, родительским классом для всех классов параметров приложения, предоставляет четыре события для проверки границ. Благодаря обработке этих событий весь код проверки размещается в одном месте, а не в разных частях проекта.
Используемое событие зависит от времени, когда необходимо проверить параметры, как описано в следующей таблице.
событие | Вхождение и использование |
---|---|
SettingsLoaded | Возникает после начальной загрузки группы свойств параметров. Используйте это событие для проверки начальных значений для всей группы свойств перед их применением в приложении. |
SettingChanging | Происходит перед изменением значения одного свойства параметров. Используйте это событие для проверки одного свойства до его изменения. Оно позволяет пользователям немедленно получить сведения о своих действиях и решениях. |
PropertyChanged | Происходит после изменения значения одного свойства параметра. Используйте это событие для проверки одного свойства после его изменения. Это событие редко используется для проверки, если не требуется длительный процесс асинхронной проверки. |
SettingsSaving | Возникает перед сохранением группы свойств параметров. Используйте это событие для проверки значений для всей группы свойств перед их сохранением на диске. |
Как правило, в целях проверки все эти события внутри одного приложения не используются. Например, часто бывает можно выполнить все требования по проверке путем обработки только SettingChanging событий.
Обычно при обнаружении недопустимого значения обработчик событий выполняет одно из следующих действий.
Автоматически предоставляет заведомо правильное значение, например значение по умолчанию.
Повторно запрашивает сведения у пользователя серверного кода.
Для событий, возникающих до связанных с ними действий, таких как SettingChanging и SettingsSaving, использует CancelEventArgs аргумент для отмены операции.
Дополнительные сведения об обработке событий см. в разделе Общие сведения об обработчиках событий.
Следующие процедуры показывают, как для проверки корректности даты рождения с помощью SettingChanging или SettingsSaving событий. В этих процедурах предполагается, что вы уже создали параметры приложения. В этом примере будет выполнена проверка границ для параметра с именем DateOfBirth
. Дополнительные сведения о создании параметров см. в разделе как: Создание параметров приложения.
Получение объекта параметров приложения
Для получения ссылки на объект параметров приложения (экземпляр программы-оболочки) выполните одно из следующих действий:
Если вы создали параметры в диалоговом окне «Параметры приложения Visual Studio» в редакторе свойств, объект параметров по умолчанию, созданный для вашего языка, можно получить с помощью следующего выражения.
Configuration.Settings.Default
MySettings.Default
-или-
Если вы являетесь разработчиком на Visual Basic и создали параметры приложения с помощью конструктора проектов, для извлечения параметров можно использовать объект My.Settings.
-или-
Если параметры были созданы путем наследования от ApplicationSettingsBase напрямую, необходимо создать экземпляр класса вручную.
MyCustomSettings settings = new MyCustomSettings();
Dim Settings as New MyCustomSettings()
В следующих процедурах предполагается, что объект параметров приложения получен путем выполнения последнего действия в этой процедуре.
Проверка параметров приложения при изменении параметра
Если вы являетесь C# developer, в формы или элемента управления
Load
событий, добавьте обработчик событий для SettingChanging событий.-или-
Если вы являетесь разработчиком на Visual Basic, объявите переменную
Settings
с помощью ключевого словаWithEvents
.public void Form1_Load(Object sender, EventArgs e) { settings.SettingChanging += new SettingChangingEventHandler(MyCustomSettings_SettingChanging); }
Public Sub Form1_Load(sender as Object, e as EventArgs) AddHandler settings.SettingChanging, AddressOf MyCustomSettings_SettingChanging End Sub
Определите обработчик событий и напишите внутри него код для выполнения проверки границ для даты рождения.
private void MyCustomSettings_SettingChanging(Object sender, SettingChangingEventArgs e) { if (e.SettingName.Equals("DateOfBirth")) { Date newDate = (Date)e.NewValue; If (newDate > Date.Now) { e.Cancel = true; // Inform the user. } } }
Private Sub MyCustomSettings_SettingChanging(sender as Object, e as SettingChangingEventArgs) Handles Settings.SettingChanging If (e.SettingName.Equals("DateOfBirth")) Then Dim NewDate as Date = CType(e.NewValue, Date) If (NewDate > Date.Now) Then e.Cancel = True ' Inform the user. End If End If End Sub
Проверка параметров приложения в ходе сохранения
В своей форме или элемента управления
Load
событий, добавьте обработчик событий для SettingsSaving событий.public void Form1_Load(Object sender, EventArgs e) { settings.SettingsSaving += new SettingsSavingEventHandler(MyCustomSettings_SettingsSaving); }
Public Sub Form1_Load(Sender as Object, e as EventArgs) AddHandler settings.SettingsSaving, AddressOf MyCustomSettings_SettingsSaving End Sub
Определите обработчик событий и напишите внутри него код для выполнения проверки границ для даты рождения.
private void MyCustomSettings_SettingsSaving(Object sender, SettingsSavingEventArgs e) { if (this["DateOfBirth"] > Date.Now) { e.Cancel = true; } }
Private Sub MyCustomSettings_SettingsSaving(Sender as Object, e as SettingsSavingEventArgs) If (Me["DateOfBirth"] > Date.Now) Then e.Cancel = True End If End Sub