在此系列教程中,你将生成一个数学测验。 测验包含四个随机数学问题,测验者尝试在指定时间内回答。
本教程介绍如何通过清除默认值和自定义控件的外观来增强测验。
在本教程的最后一篇教程中,你将了解如何:
- 添加事件处理程序以清除默认 NumericUpDown 控件值。
- 自定义测验。
先决条件
本教程基于前面的教程,从 创建数学测验 WinForms 应用开始。 如果尚未完成这些教程,请先完成这些教程。
为 NumericUpDown 控件添加事件处理程序
测验包含测验者用于输入数字的 NumericUpDown 控件。 输入答案时,首先需要选择默认值,或者手动删除该值。 通过添加 Enter 事件处理程序,可以更轻松地输入答案。 此代码选择并清除每个 NumericUpDown 控件中的当前值,只要测验接受者选择它并开始输入其他值。
选择窗体上的第一个 NumericUpDown 控件。 在 属性 对话框中,选择工具栏上的 事件 图标。
在属性中,事件选项卡显示您可以对表单上所选项目进行响应的所有事件。 在这种情况下,所有列出的事件都与 NumericUpDown 控件相关。
选择“Enter”事件,输入“answer_Enter”,然后选择 Enter 。
代码编辑器出现,并显示为 sum NumericUpDown 控件创建的 Enter 事件处理程序。
在 answer_Enter 事件处理程序的方法中,添加以下代码:
在此代码中:
- 第一行声明该方法。 它包括名为
sender
的参数。 在 C# 中,参数object sender
。 在 Visual Basic 中,它为sender As System.Object
。 此参数指的是触发其事件的对象,该对象称为发送者。 在这种情况下,发送方对象是 NumericUpDown 控件。 - 方法中的第一行将发送者从泛型对象转换为 NumericUpDown 控件。 该行还会将名称 answerBox 分配给 NumericUpDown 控件。 窗体上的所有 NumericUpDown 控件都将使用此方法,而不只是加法问题的控件。
- 下一行验证 answerBox 是否已成功转换为 NumericUpDown 控件。
if
语句中的第一行确定当前在 NumericUpDown 控件中的答案的长度。if
语句中的第二行使用答案长度来选择控件中的当前值。
当测验接受者选择控件时,Visual Studio 将触发此事件。 此代码选择当前答案。 测验接受者开始输入其他答案后,将清除当前答案并将其替换为新答案。
在 Windows 窗体设计器中,再次选择加法问题的 NumericUpDown 控件。
在 属性 对话框的 事件 页面中,找到 单击 事件,然后从下拉菜单中选择 answer_Enter。 此事件处理程序是您刚刚添加的。
在“Windows 窗体设计器”中,选择减法问题的 NumericUpDown 控件。
在 属性 对话框的“事件” 页中,找到 Enter 事件,然后从下拉菜单中选择 answer_Enter。 此事件处理程序是您刚刚添加的。 对“Click”事件重复此步骤。
对乘法和除法 NumericUpDown 控件重复上述两个步骤。
运行应用
保存程序并运行它。
启动测验,然后选择 NumericUpDown 控件。 将自动选择现有值,然后在开始输入其他值时清除。
个性化您的测验
在本教程的最后一部分,你将探索一些自定义测验的方法,并扩展你学到的内容。
更改标签的颜色
使用 timeLabel 控件的 BackColor 属性在测验中仅剩五秒时将此标签变为红色。
当测验结束时重置颜色。
为正确答案播放声音
当正确答案被输入到 NumericUpDown 控件中时,通过播放声音来提示测验者。 若要实现此功能,请为每个控件的 ValueChanged 事件编写事件处理程序。 每当测验者更改控件的值时,此类事件便会触发。
后续步骤
祝贺! 你已完成本系列教程。 已在 Visual Studio IDE 中完成这些编程和设计任务:
- 创建了一个使用 Windows 窗体的 Visual Studio 项目
- 添加了标签、按钮和 NumericUpDown 控件
- 添加了计时器
- 为控件设置事件处理程序
- 编写 C# 或 Visual Basic 代码来处理事件
继续学习另一个教程系列,了解如何构建配对游戏。