c# - 如何使用“KeyCode”检查复选框?(Windows 窗体应用程序)
问题描述
我必须用“KeyCode”检查复选框。(热键)我试过了,但它有一些错误......我希望你们能帮助我:)
private void NotYetHAX_Load(object sender, EventArgs e)
{
this.KeyPreview = true;
}
private void HotKey_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.KeyCode == Keys.K)
{
checkbox1.Checked();
}
else
{
checkbox.Checked = false();
}
}
解决方案
我将在这里列出您可能想做的两件事:
根据您当前的代码,您似乎希望
checkBox1
在用户按下“K”时进行检查,而在用户按下其他任何内容时取消检查。在这种情况下,您需要做的就是稍微修改一下语法,代码就可以工作了:private void HotKey_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { if (e.KeyCode == Keys.K) checkBox1.Checked = true; else checkBox1.Checked = false; }
简化:
private void HotKey_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) => this.checkBox1.Checked = (e.KeyCode == Keys.K);
将此添加到您希望它工作的每个控件的事件处理程序中(即,您希望能够检查
checkBox1
任何时候这些控件中的任何一个被聚焦);这也适用于下面的那些。小心在这里使用空格键来切换它;取消选中空格键不起作用,因为空格键还充当“切换”按钮。
如果你愿意,你可以通过这样做来修复它(肮脏的方法,如果你想让它看起来更好,你必须覆盖CheckBox
我认为的类):private void HotKey_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { if (e.KeyCode == Keys.Space) checkBox1.Checked = !checkBox1.Checked else if (e.KeyCode == Keys.K) checkBox1.Checked = true; else checkBox1.Checked = false; }
编辑:如果您按住空格键,此代码将不起作用,因此
CheckBox
如果您希望它始终正常运行,则必须覆盖该类。但是,另一种解决方法是在CheckBox
不需要单击时简单地禁用它。您想
checkBox1.Checked
在按下“K”时切换在这种情况下,这将起到作用:
private void HotKey_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { if (e.KeyCode == Keys.K) checkBox1.Checked = !checkBox1.Checked; }
推荐阅读
- sql - 从 GPS 日志计算用户的距离和持续时间
- r - 在函数内部调用时,file.copy 不起作用
- elasticsearch - 这个弹性搜索查询有什么问题?
- python - 无法让熊猫正确导入
- tensorflow - keras 或 tensorflow 中的 Conv2D 层之后的 ConvLSTM2D
- r - 使用 mgcv 包中的 bam() 而不是 gam() 函数拟合随机效应模型时出错,R
- react-native - 更新 React Native 后安装 pod 时出现问题
- docker - 在 Docker 内部运行的 docker-swarm slave 中使用 docker agent
- python - 在opencv python中获取图像的亮度和对比度
- json - Hive 从一个长的 concat json 字符串中解析 json 元素