Udostępnij za pośrednictwem


Instrukcje: weryfikowanie ustawień aplikacji

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

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.

Zdarzenie 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 zapisaniem się grupy właściwości ustawień.

To zdarzenie służy do walidacji wartości całej grupy właściwości, zanim zostaną 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 zdarzenie SettingChanging.

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żyj argumentu CancelEventArgs, aby anulować operację.

Aby uzyskać więcej informacji na temat obsługi zdarzeń, zobacz Przegląd Obsługi Zdarzeń.

Poniższe procedury pokazują, jak przetestować prawidłową datę urodzenia przy użyciu SettingChanging lub zdarzenia 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 Instrukcje: tworzenie ustawień aplikacji.

Aby uzyskać obiekt ustawień aplikacji

  • Uzyskaj odwołanie do obiektu ustawień aplikacji (obiekt opakowujący), wykonując jedną z następujących opcji:

    • 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 projektanta projektu, możesz pobrać ustawienia przy użyciu My.Settings Object.

      -lub-

    • Jeśli utworzyłeś swoje ustawienia, bezpośrednio wyprowadzając z ApplicationSettingsBase, musisz ręcznie utworzyć instancję swojej klasy.

      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 w przypadku zmiany ustawienia

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

    -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 sprawdzić poprawność ustawień aplikacji podczas zapisywania

  1. W zdarzeniu Load formularza lub kontrolki dodaj program obsługi zdarzeń dla zdarzenia 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
    
  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ż