【问题标题】:How to check checkboxes with "KeyCode"? ( Windows Forms Application )如何使用“KeyCode”检查复选框? (Windows 窗体应用程序)
【发布时间】:2021-04-11 01:01:22
【问题描述】:

我必须使用“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();
            }
        }

【问题讨论】:

  • 复选框实际上不允许用户输入。他们使用键盘的标准 Windows 行为是使用 SpaceBar 切换选择。请您详细说明您想要实现的目标以及您希望用户做什么?
  • 就像当他们按下“K”复选框时会做某事

标签: c# .net checkbox


【解决方案1】:

我将在这里列出您可能想做的两件事:

  1. 根据您当前的代码,您似乎希望在用户按下“K”时检查checkBox1,并在用户按下其他任何内容时取消选中。在这种情况下,您需要做的就是稍微修正一下语法,代码就可以工作了:

    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 时简单地禁用它。

  2. 您希望在按下“K”时切换checkBox1.Checked

    在这种情况下,这可以解决问题:

    private void HotKey_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) {
        if (e.KeyCode == Keys.K)
            checkBox1.Checked = !checkBox1.Checked;
    }
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    • 1970-01-01
    • 2022-01-10
    相关资源
    最近更新 更多