Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе показано, как проверить параметры приложения перед сохранением.
Так как параметры приложения строго типизированы, у пользователей есть уверенность, что пользователи не могут назначать данные неправильного типа заданному параметру. Однако пользователь по-прежнему может попытаться назначить значение параметру, который выходит за пределы допустимых границ, например предоставление даты рождения, которая возникает в будущем. ApplicationSettingsBase, родительский класс всех классов параметров приложения, предоставляет четыре события для включения проверки таких границ. Обработка этих событий собирает весь код проверки в одном месте, а не разбросанный по всему проекту.
Используемое событие зависит от того, когда необходимо проверить параметры, как описано в следующей таблице.
| Событие | Появление и использование |
|---|---|
| SettingsLoaded | Происходит после начальной загрузки группы свойств параметров. Используйте это событие для проверки начальных значений для всей группы свойств, прежде чем они будут использоваться в приложении. |
| SettingChanging | Происходит до изменения значения одного свойства параметров. Используйте это событие для проверки одного свойства перед изменением. Он может предоставить немедленную обратную связь пользователям о своих действиях и выборе. |
| PropertyChanged | Происходит после изменения значения одного свойства параметров. Используйте это событие для проверки одного свойства после изменения. Это событие редко используется для проверки, если не требуется длительный асинхронный процесс проверки. |
| SettingsSaving | Происходит перед сохранением группы свойств параметров. Используйте это событие для проверки значений для всей группы свойств перед сохранением на диске. |
Как правило, для проверки не будут использоваться все эти события в одном приложении. Например, часто можно выполнить все требования проверки, обрабатывая только событие SettingChanging.
Обработчик событий обычно выполняет одно из следующих действий при обнаружении недопустимого значения:
Автоматически предоставляет правильное значение, например значение по умолчанию.
Повторно запрашивает пользователя серверного кода для получения информации.
Для событий, возникающих до связанных действий, таких как SettingChanging и SettingsSaving, используется аргумент CancelEventArgs для отмены операции.
Для получения дополнительной информации об обработке событий см. Обзор обработчиков событий.
В следующих процедурах показано, как проверить допустимую дату рождения с помощью SettingChanging или события SettingsSaving. Процедуры были написаны в соответствии с предположением, что вы уже создали параметры приложения; в этом примере мы будем выполнять проверку границ для параметра с именем DateOfBirth. Дополнительные сведения о создании параметров см. в разделе Практическое руководство. Создание параметров приложения.
Чтобы получить объект параметров приложения
Получите ссылку на объект параметров приложения (экземпляр оболочки), выполнив одно из следующих маркированных элементов:
Если вы создали параметры с помощью диалогового окна "Параметры приложения Visual Studio" в редакторе свойств , можно получить объект параметров по умолчанию, созданный для вашего языка, с помощью следующего выражения.
Properties.Settings.DefaultMySettings.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