Udostępnij za pośrednictwem


Samouczek: dostosowywanie testu matematycznego aplikacji WinForms

W tej serii czterech samouczków utworzysz test matematyczny. Quiz zawiera cztery losowe zadania matematyczne, które uczestnik próbuje rozwiązać w określonym czasie.

W tym samouczku pokazano, jak ulepszyć quiz poprzez wyczyszczenie wartości domyślnych i dostosowanie wyglądu elementów sterujących.

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 kontrolki NumericUpDown.
  • Dostosuj quiz.

Warunki wstępne

Ten samouczek opiera się na poprzednich samouczkach, począwszy od Tworzenie testu matematycznego aplikacji WinForms. Jeśli nie ukończyłeś tych samouczków, przejdź przez nie najpierw.

Dodawanie procedur obsługi zdarzeń dla kontrolek NumericUpDown

Test zawiera NumericUpDown kontrolek, 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 program obsługi zdarzeń Enter, możesz ułatwić wprowadzanie odpowiedzi. Ten kod wybiera i czyści bieżącą wartość w każdej kontrolce NumericUpDown natychmiast, gdy osoba rozwiązująca quiz ją wybierze i 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.

    Zrzut ekranu przedstawiający pasek narzędzi okna dialogowego Właściwości. Zostanie wywołana ikona zawierająca błyskawicę.

    Karta Zdarzeń w Właściwości wyświetla 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 Enter.

    Zrzut ekranu przedstawiający okno dialogowe Właściwości z wybranym zdarzeniem Enter. Pole metody zawiera answer_Enter.

    Edytor kodu pojawia się i wyświetla procedurę obsługi zdarzeń Enter, którą utworzyłeś dla kontrolki NumericUpDown sum.

  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);
        }
    }
    

W tym kodzie:

  • Pierwszy wiersz deklaruje metodę . Zawiera parametr o nazwie sender. W języku C#parametr jest 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 answerBox został pomyślnie przekształcony na kontrolkę 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 wyczyszczona i zastąpiona nową odpowiedzią.

  1. W programie Windows Forms Designerponownie wybierz kontrolkę NumericUpDown dla problemu dodawania.

  2. Na stronie Zdarzenia okna dialogowego Właściwości znajdź zdarzenie Kliknij, a następnie wybierz answer_Enter z menu rozwijanego. Ten program obsługi zdarzeń to ten, który właśnie dodałeś.

  3. W programie Windows Forms Designerwybierz kontrolkę NumericUpDown dla problemu odejmowania.

  4. Na stronie Zdarzenia okna dialogowego właściwości znajdź zdarzenie Enter, a następnie wybierz answer_Enter z menu rozwijanego. Ten program obsługi zdarzeń to ten, który właśnie dodałeś. Powtórz ten krok dla zdarzenia Click.

  5. Powtórz dwa poprzednie kroki dla kontrolki NumericUpDown do mnożenia i dzielenia.

Uruchamianie aplikacji

  1. Zapisz program i uruchom go.

  2. Rozpocznij test i wybierz kontrolkę NumericUpDown. Istniejąca wartość jest wybierana automatycznie, i następnie czyszczona, gdy zaczynasz wprowadzać inną wartość.

    Zrzut ekranu przedstawiający aplikację testową z czterema losowymi problemami matematycznymi. Wybrano domyślną odpowiedź na pierwszy problem.

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 czerwoną, gdy pozostanie tylko pięć sekund w quizie.

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

Odtwarzanie dźwięku dla poprawnej odpowiedzi

Aby przekazać wskazówkę, odtwórz dźwięk, gdy poprawna odpowiedź zostanie wprowadzona do kontrolki NumericUpDown. Aby zaimplementować tę funkcję, napisz procedurę obsługi zdarzeń dla zdarzenia ValueChanged każdej kontrolki. To zdarzenie jest uruchamiane za każdym razem, gdy użytkownik quizu zmienia wartość kontrolki.

Następne kroki

Gratulacje! Ukończyłeś tę serię samouczków. 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.