Учебник. Настройка приложения WinForms с математическим тестом

В этой серии из четырех учебников вы создадите математический тест. Тест содержит четыре случайных арифметических примера, которые игрок должен решить в течение определенного времени.

В этом учебнике показано, как улучшить тест, настроив внешний вид элементов управления.

В этом учебнике вы узнаете, как выполнять следующие задачи:

  • Добавьте обработчики событий, чтобы очистить значения элементов управления NumericUpDown по умолчанию.
  • Настройка теста.

Необходимые компоненты

Этот учебник построен на предыдущих, начиная с учебника Создание приложения WinForms с математическим тестом. Если вы не изучили эти учебники, начните с них.

Добавление обработчиков событий для элементов управления NumericUpDown

Тест содержит элементы управления NumericUpDown, с помощью которых игрок вводит числа. При вводе ответа необходимо либо выбрать значение по умолчанию, либо удалить это значение вручную. Добавив обработчик событий Enter, можно упростить ввод ответов. Этот код будет выделять и удалять текущее значение в каждом элементе управления NumericUpDown, как только игрок выберет элемент управления и начнет вводить другое значение.

  1. Выберите первый элемент управления NumericUpDown в форме. В диалоговом окне Свойства выберите значок События на панели инструментов.

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

    На вкладке События в диалоговом окне Свойства отображаются все события для выбранного в форме элемента, на которые можно реагировать. В этом случае все перечисленные события относятся к элементу управления NumericUpDown.

  2. Выберите событие Enter, введите answer_Enter и нажмите клавишу ВВОД.

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

    Откроется редактор кода, в котором отобразится обработчик события Enter, созданный для элемента управления NumericUpDown sum.

  3. В методе для обработчика событий answer_Enter введите следующий код:

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

Важно!

Используйте элемент управления языка программирования в правом верхнем углу этой страницы, чтобы просмотреть фрагмент кода на C# или Visual Basic.

Programming language control for Microsoft Learn

В этом коде:

  • В первой строке объявляется метод. Он содержит параметр с именем sender. В C# параметр имеет значение object sender. В Visual Basic он имеет значение sender As System.Object. Этот параметр ссылается на объект, событие которого срабатывает. Он называется отправителем. В данном случае объектом-отправителем является элемент управления NumericUpDown.
  • Первая строка внутри метода приводит, или преобразует, отправителя из универсального объекта в элемент управления NumericUpDown. Эта строка также назначает имя answerBox элементу управления NumericUpDown. Все элементы управления NumericUpDown в форме будут использовать этот метод, а не только элемент управления примера на сложение.
  • В следующей строке кода выполняется проверка, что answerBox был успешно приведен как элемент управления NumericUpDown.
  • Первая строка внутри инструкции if определяет длину ответа, который в данный момент находится в элементе управления NumericUpDown.
  • Во второй строке внутри инструкции if используется длина ответа для выбора текущего значения в элементе управления.

Когда игрок выберет элемент управления, Visual Studio запускает это событие. Этот код выбирает текущий ответ. Как только игрок начинает вводить другой ответ, текущий ответ удаляется и заменяется новым.

  1. В конструкторе Windows Forms снова выберите элемент управления NumericUpDown проблемы с добавлением.

  2. На странице "События" диалогового окна "Свойства" найдите событие Click и выберите answer_Enter в раскрывающемся меню. Это обработчик событий, который вы только что добавили.

  3. В конструкторе Windows Forms выберите элемент управления NumericUpDown для примера на вычитания.

  4. На странице События диалогового окна Свойства найдите событие Enter, а затем в раскрывающемся меню выберите answer_Enter. Это обработчик событий, который вы только что добавили. Повторите этот шаг для события Click .

  5. Повторите предыдущие два шага для элементов управления NumericUpDown для умножения и деления.

Запустите приложение.

  1. Сохраните и выполните программу.

  2. Запустите тест и выберите элемент управления NumericUpDown. Существующее значение автоматически выделяется и удаляется, когда вы начинаете вводить другое значение.

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

Настройка теста

В последней части этого руководства рассматривается несколько способов настройки теста и приводятся дополнительные сведения по изученным вопросам.

Изменение цвета метки

  • Когда для прохождения теста останется лишь пять секунд, измените цвет элемента управления timeLabel на красный путем задания его свойства BackColor.

    timeLabel.BackColor = Color.Red;
    
  • Восстановите цвет при завершении игры.

Воспроизведение звука правильного ответа

Дайте игроку подсказку с помощью воспроизведения звука при вводе правильного ответа в элементе управления NumericUpDown. Для реализации этой функции напишите обработчик событий для каждого события элемента управления ValueChanged. Этот тип события срабатывает всякий раз, когда игрок изменяет значение элемента управления.

Следующие шаги

Поздравляем! Вы завершили эту серию учебников. А также выполнили следующие задачи по программированию и проектированию в интегрированной среде разработки Visual Studio:

  • Создание проекта Visual Studio, использующего Windows Forms
  • Добавление меток, кнопки и элементов управления NumericUpDown
  • Добавление таймера
  • Настройка обработчиков событий для элементов управления
  • Написание кода C# или Visual Basic для управления событиями

Продолжите обучение, воспользовавшись другой серией учебников по созданию игры "Подбери пару!".