Porady: sprawdzanie poprawności ustawień aplikacji

W tym temacie pokazano, jak zweryfikować ustawienia aplikacji przed ich utrwalone.

Ponieważ ustawienia aplikacji są silnie typizowane, masz pewność, że użytkownicy nie mogą przypisywać danych nieprawidłowego typu do danego ustawienia. Jednak użytkownik nadal może podjąć próbę przypisania wartości do ustawienia, które wykracza poza dopuszczalne granice — na przykład podanie daty urodzenia, która przypada w przyszłości. ApplicationSettingsBase, klasa nadrzędna wszystkich klas ustawień aplikacji, uwidacznia cztery zdarzenia umożliwiające sprawdzanie takich granic. Obsługa tych zdarzeń umieszcza cały kod weryfikacji w jednej lokalizacji, zamiast rozpraszać go w całym projekcie.

Używane zdarzenie zależy od tego, kiedy trzeba zweryfikować ustawienia zgodnie z opisem w poniższej tabeli.

Wydarzenie Wystąpienie i użycie
SettingsLoaded Występuje po początkowym załadowaniu grupy właściwości ustawień.

To zdarzenie służy do sprawdzania poprawności początkowych wartości dla całej grupy właściwości przed ich użyciem w aplikacji.
SettingChanging Występuje przed zmianą wartości pojedynczej właściwości ustawień.

To zdarzenie służy do sprawdzania poprawności pojedynczej właściwości przed jej zmianą. Może ona przekazać natychmiastowe opinie użytkownikom dotyczące ich działań i wyborów.
PropertyChanged Występuje po zmianie wartości pojedynczej właściwości ustawień.

To zdarzenie służy do sprawdzania poprawności pojedynczej właściwości po jej zmianie. To zdarzenie jest rzadko używane do walidacji, chyba że wymagany jest długi, asynchroniczny proces weryfikacji.
SettingsSaving Występuje przed zapisanie grupy właściwości ustawień.

To zdarzenie służy do sprawdzania poprawności wartości dla całej grupy właściwości przed utrwalone na dysku.

Zazwyczaj do celów weryfikacji nie będzie używanych wszystkich tych zdarzeń w ramach tej samej aplikacji. Na przykład często można spełnić wszystkie wymagania dotyczące walidacji, obsługując tylko SettingChanging zdarzenie.

Procedura obsługi zdarzeń zazwyczaj wykonuje jedną z następujących akcji, gdy wykryje nieprawidłową wartość:

  • Automatycznie dostarcza wartość znaną jako poprawną, na przykład wartość domyślną.

  • Ponownie wysyła zapytanie do użytkownika kodu serwera, aby uzyskać informacje.

  • W przypadku zdarzeń zgłoszonych przed skojarzonymi akcjami, takimi jak SettingChanging i SettingsSaving, użyje argumentu CancelEventArgs , aby anulować operację.

Aby uzyskać więcej informacji na temat obsługi zdarzeń, zobacz Omówienie procedur obsługi zdarzeń.

Poniższe procedury pokazują, jak przetestować prawidłową datę urodzenia przy użyciu SettingChanging zdarzenia lub SettingsSaving . Procedury zostały napisane zgodnie z założeniem, że utworzono już ustawienia aplikacji; W tym przykładzie wykonamy sprawdzanie granic dla ustawienia o nazwie DateOfBirth. Aby uzyskać więcej informacji na temat tworzenia ustawień, zobacz How to: Create Application Ustawienia (Instrukcje: tworzenie aplikacji Ustawienia).

Aby uzyskać obiekt ustawień aplikacji

  • Uzyskaj odwołanie do obiektu ustawień aplikacji (wystąpienie otoki), wypełniając jeden z następujących elementów punktowanych:

    • Jeśli ustawienia zostały utworzone przy użyciu okna dialogowego Ustawienia aplikacji programu Visual Studio w Edytorze właściwości, możesz pobrać obiekt ustawień domyślnych wygenerowany dla języka za pomocą następującego wyrażenia.

      Properties.Settings.Default
      
      MySettings.Default
      

      — lub —

    • Jeśli jesteś deweloperem języka Visual Basic i utworzono ustawienia aplikacji przy użyciu Projektant Project, możesz pobrać ustawienia przy użyciu Ustawienia My.Ustawienia Obiekt.

      — lub —

    • Jeśli ustawienia zostały utworzone bezpośrednio, ApplicationSettingsBase należy utworzyć wystąpienie klasy ręcznie.

      MyCustomSettings settings = new MyCustomSettings();
      
      Dim Settings as New MyCustomSettings()
      

Poniższe procedury zostały napisane zgodnie z założeniem, że obiekt ustawień aplikacji został uzyskany przez ukończenie ostatniego elementu punktowanego w tej procedurze.

Aby zweryfikować Ustawienia aplikacji podczas zmiany ustawienia

  1. Jeśli jesteś deweloperem języka C#, w zdarzeniu formularza lub kontrolki Load dodaj procedurę obsługi zdarzeń dla SettingChanging zdarzenia.

    — lub —

    Jeśli jesteś deweloperem języka Visual Basic, należy zadeklarować zmienną Settings przy użyciu słowa kluczowego 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
    
  2. Zdefiniuj program obsługi zdarzeń i napisz kod w nim, aby wykonać sprawdzanie granic w dacie urodzenia.

    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
    

Aby zweryfikować Ustawienia aplikacji w przypadku wystąpienia zapisu

  1. W zdarzeniu formularza lub kontrolki Load dodaj procedurę obsługi zdarzeń dla SettingsSaving zdarzenia.

    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
    
  2. Zdefiniuj program obsługi zdarzeń i napisz kod w nim, aby wykonać sprawdzanie granic w dacie urodzenia.

    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
    

Zobacz też