我正在尝试制作一组与数字键盘相对应的九个复选框,例如,点击数字键盘上的“7”键将使左上角的复选框相应地选中或取消选中。
我无法确定的是如何表示 KeyDown 以便无论页面上当前关注什么内容都可以选择项目,以及如何将 KeyDown 指向相应的复选框以使其从被选中状态切换或未选中。谢谢您的意见。
我正在尝试制作一组与数字键盘相对应的九个复选框,例如,点击数字键盘上的“7”键将使左上角的复选框相应地选中或取消选中。
我无法确定的是如何表示 KeyDown 以便无论页面上当前关注什么内容都可以选择项目,以及如何将 KeyDown 指向相应的复选框以使其从被选中状态切换或未选中。谢谢您的意见。
在您的表单中,将KeyPreview
属性设置为True
.
为表单创建一个KeyDown
事件处理程序。
KeyDown
处理程序应该有类似这样的代码:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.NumPad1:
Toggle(checkBox1); break;
case Keys.NumPad2:
Toggle(checkBox2); break;
case Keys.NumPad3:
Toggle(checkBox3); break;
...
default:
break;
}
}
private void Toggle(CheckBox checkbox)
{
checkbox.Checked = !checkbox.Checked;
}
如果您不喜欢 switch 语句,另一种选择是设置一个字典,将键映射到复选框。然后在您的 keydown 中,您可以检查该键是否在字典中,如果是,请获取复选框并切换它。