Практическое руководство. Проверка параметров приложения
В этом разделе показано, как проверить параметры приложения перед сохранением.
Так как параметры приложения строго типизированы, у пользователей есть уверенность, что пользователи не могут назначать данные неправильного типа заданному параметру. Однако пользователь по-прежнему может попытаться назначить значение параметру, который выходит за пределы допустимых границ, например предоставление даты рождения, которая возникает в будущем. ApplicationSettingsBase, родительский класс всех классов параметров приложения, предоставляет четыре события для включения проверки таких границ. Обработка этих событий собирает весь код проверки в одном месте, а не разбросанный по всему проекту.
Используемое событие зависит от того, когда необходимо проверить параметры, как описано в следующей таблице.
Событие | Появление и использование |
---|---|
SettingsLoaded | Происходит после начальной загрузки группы свойств параметров. Используйте это событие для проверки начальных значений для всей группы свойств, прежде чем они будут использоваться в приложении. |
SettingChanging | Происходит до изменения значения одного свойства параметров. Используйте это событие для проверки одного свойства перед изменением. Он может предоставить немедленную обратную связь пользователям о своих действиях и выборе. |
PropertyChanged | Происходит после изменения значения одного свойства параметров. Используйте это событие для проверки одного свойства после изменения. Это событие редко используется для проверки, если не требуется длительный асинхронный процесс проверки. |
SettingsSaving | Происходит перед сохранением группы свойств параметров. Используйте это событие для проверки значений для всей группы свойств перед сохранением на диске. |
Как правило, для проверки не будут использоваться все эти события в одном приложении. Например, часто можно выполнить все требования проверки, обрабатывая только событие SettingChanging.
Обработчик событий обычно выполняет одно из следующих действий при обнаружении недопустимого значения:
Автоматически предоставляет правильное значение, например значение по умолчанию.
Повторно запрашивает пользователя серверного кода для получения информации.
Для событий, возникающих до связанных действий, таких как SettingChanging и SettingsSaving, используется аргумент CancelEventArgs для отмены операции.
Для получения дополнительной информации об обработке событий см. Обзор обработчиков событий.
В следующих процедурах показано, как проверить допустимую дату рождения с помощью SettingChanging или события SettingsSaving. Процедуры были написаны в соответствии с предположением, что вы уже создали параметры приложения; в этом примере мы будем выполнять проверку границ для параметра с именем DateOfBirth
. Дополнительные сведения о создании параметров см. в разделе Практическое руководство. Создание параметров приложения.
Чтобы получить объект параметров приложения
Получите ссылку на объект параметров приложения (экземпляр оболочки), выполнив одно из следующих маркированных элементов:
Если вы создали параметры с помощью диалогового окна "Параметры приложения Visual Studio" в редакторе свойств , можно получить объект параметров по умолчанию, созданный для вашего языка, с помощью следующего выражения.
Properties.Settings.Default
MySettings.Default
-или-
Если вы разработчик Visual Basic и создали параметры приложения с помощью конструктора проектов, вы можете получить параметры с помощью объекта My.Settings.
-или-
Если вы создали параметры, напрямую производные от ApplicationSettingsBase, необходимо вручную инстанцировать ваш класс.
MyCustomSettings settings = new MyCustomSettings();
Dim Settings as New MyCustomSettings()
Приведенные ниже процедуры были написаны в соответствии с предположением, что объект параметров приложения был получен путем завершения последнего маркированного элемента в этой процедуре.
Проверка параметров приложения при изменении параметра
Если вы являетесь разработчиком C#, в событии
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")) { var newDate = (DateTime)e.NewValue; if (newDate > DateTime.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
См. также
.NET Desktop feedback