Samouczek: dostosowywanie testu matematycznego aplikacji WinForms

W tej serii czterech samouczków utworzysz test matematyczny. Test zawiera cztery losowe problemy matematyczne, na które test próbuje odpowiedzieć w określonym czasie.

W tym samouczku pokazano, jak ulepszyć test przez wyczyszczenie wartości domyślnych i dostosowanie wyglądu kontrolek.

Z tego ostatniego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Dodaj programy obsługi zdarzeń, aby wyczyścić domyślne wartości kontrolek NumericUpDown.
  • Dostosuj test.

Wymagania wstępne

Ten samouczek opiera się na poprzednich samouczkach, zaczynając od sekcji Tworzenie aplikacji WinForms do testu matematycznego. Jeśli te samouczki nie zostały ukończone, najpierw zapoznaj się z nimi.

Dodawanie procedur obsługi zdarzeń dla kontrolek NumericUpDown

Test zawiera NumericUpDown kontrolki, których osoby testujące używają do wprowadzania liczb. Po wprowadzeniu odpowiedzi musisz najpierw wybrać wartość domyślną lub usunąć tę wartość ręcznie. Dodając procedurę obsługi zdarzeń Enter , możesz ułatwić wprowadzanie odpowiedzi. Ten kod wybiera i czyści bieżącą wartość w każdej kontrolce NumericUpDown, gdy tylko wybierze ją, a następnie zacznie wprowadzać inną wartość.

  1. Wybierz pierwszą kontrolkę NumericUpDown w formularzu. W oknie dialogowym Właściwości wybierz ikonę Zdarzenia na pasku narzędzi.

    Screenshot that shows the toolbar of the Properties dialog box. An icon that contains a lightning bolt is called out.

    Na karcie Zdarzenia w obszarze Właściwości są wyświetlane wszystkie zdarzenia, na które można odpowiedzieć dla elementu wybranego w formularzu. W tym przypadku wszystkie wymienione zdarzenia odnoszą się do kontrolki NumericUpDown.

  2. Wybierz zdarzenie Enter, wprowadź answer_Enter, a następnie wybierz klawisz Enter.

    Screenshot that shows the Properties dialog box with the Enter event selected. The method box contains answer_Enter.

    Zostanie wyświetlony edytor kodu i zostanie wyświetlona procedura obsługi zdarzeń Enter utworzona dla sumy kontrolki NumericUpDown.

  3. W metodzie obsługi zdarzeń answer_Enter dodaj następujący kod:

    private void answer_Enter(object sender, EventArgs e)
    {
        // Select the whole answer in the NumericUpDown control.
        NumericUpDown answerBox = sender as NumericUpDown;
    
        if (answerBox != null)
        {
            int lengthOfAnswer = answerBox.Value.ToString().Length;
            answerBox.Select(0, lengthOfAnswer);
        }
    }
    

Ważne

Użyj kontrolki języka programowania w prawym górnym rogu tej strony, aby wyświetlić fragment kodu języka C# lub fragment kodu języka Visual Basic.

Programming language control for Microsoft Learn

W tym kodzie:

  • Pierwszy wiersz deklaruje metodę . Zawiera parametr o nazwie sender. W języku C#parametr ma wartość object sender. W języku Visual Basic jest to sender As System.Object. Ten parametr odnosi się do obiektu, którego zdarzenie jest wyzwalane, co jest nazywane nadawcą. W takim przypadku obiekt nadawcy jest kontrolką NumericUpDown.
  • Pierwszy wiersz wewnątrz metody rzutuje lub konwertuje nadawcę z obiektu ogólnego na kontrolkę NumericUpDown. Ten wiersz przypisuje również nazwę answerBox do kontrolki NumericUpDown. Wszystkie kontrolki NumericUpDown w formularzu będą używać tej metody, a nie tylko kontrolki problemu dodawania.
  • Następny wiersz sprawdza, czy element answerBox został pomyślnie oddany jako kontrolka NumericUpDown.
  • Pierwszy wiersz wewnątrz instrukcji if określa długość odpowiedzi, która znajduje się obecnie w kontrolce NumericUpDown.
  • Drugi wiersz wewnątrz instrukcji if używa długości odpowiedzi, aby wybrać bieżącą wartość w kontrolce.

Gdy użytkownik quizu wybierze kontrolkę, program Visual Studio uruchomi to zdarzenie. Ten kod wybiera bieżącą odpowiedź. Gdy tylko użytkownik quizu zacznie wprowadzać inną odpowiedź, bieżąca odpowiedź zostanie wyczyszczone i zastąpiona nową odpowiedzią.

  1. W Projektant formularzy systemu Windows wybierz ponownie kontrolkę NumericUpDown problemu dodawania.

  2. Na stronie Zdarzenia okna dialogowego Właściwości znajdź zdarzenie Kliknij, a następnie wybierz answer_Enter z menu rozwijanego. Ta procedura obsługi zdarzeń jest właśnie dodawana.

  3. W Projektant formularzy systemu Windows wybierz kontrolkę NumericUpDown problemu z odejmowaniem.

  4. Na stronie Zdarzenia okna dialogowego Właściwości znajdź zdarzenie Enter , a następnie wybierz pozycję answer_Enter z menu rozwijanego. Ta procedura obsługi zdarzeń jest właśnie dodawana. Powtórz ten krok dla zdarzenia Click .

  5. Powtórz dwa poprzednie kroki dla kontrolek mnożenia i dzielenia LiczbicUpDown.

Uruchamianie aplikacji

  1. Zapisz program i go uruchom.

  2. Rozpocznij test i wybierz kontrolkę NumericUpDown. Istniejąca wartość jest wybierana automatycznie, a następnie czyszczone po rozpoczęciu wprowadzania innej wartości.

    Screenshot that shows the quiz app with four random math problems. The default answer to the first problem is selected.

Dostosowywanie testu

W tej ostatniej części samouczka zapoznasz się z pewnymi sposobami dostosowywania testu i rozwinięcia zdobytej wiedzy.

Zmienianie koloru etykiety

  • Użyj właściwości BackColor kontrolki timeLabel, aby zmienić tę etykietę na czerwono, gdy tylko pięć sekund pozostanie w tezie.

    timeLabel.BackColor = Color.Red;
    
  • Zresetuj kolor, gdy test się skończył.

Odtwarzanie dźwięku dla poprawnej odpowiedzi

Przekaż wskazówkę do testu, odtwarzając dźwięk, gdy prawidłowa odpowiedź zostanie wprowadzona do kontrolki NumericUpDown . Aby zaimplementować tę funkcję, napisz procedurę obsługi zdarzeń dla zdarzenia poszczególnych kontrolek ValueChanged . To zdarzenie jest uruchamiane za każdym razem, gdy użytkownik quizu zmienia wartość kontrolki.

Następne kroki

Gratulacje! Ta seria samouczków została ukończona. Te zadania programistyczne i projektowe zostały wykonane w środowisku IDE programu Visual Studio:

  • Utworzono projekt programu Visual Studio korzystający z formularzy Systemu Windows
  • Dodano etykiety, przyciski i kontrolki NumericUpDown
  • Dodano czasomierz
  • Konfigurowanie procedur obsługi zdarzeń dla kontrolek
  • Napisany kod w języku C# lub Visual Basic do obsługi zdarzeń

Kontynuuj naukę z inną serią samouczków na temat tworzenia pasującej gry.