C# 防止组合框键盘选择

C# 防止组合框键盘选择,c#,combobox,C#,Combobox,现在,用户可以通过键盘直接从组合框中选择项目。通过鼠标,我阻止用户根据后面的对象状态选择一些项目。当用户使用键盘时,最好的解决方案是什么 private void comboBox1_KeyDown(object sender, KeyEventArgs e) { e.Handled = true; } 使用此选项,您可以取消组合框上的所有键盘操作 假设:WinForms将此类需求引起的可用性问题放在一边(许多用户习惯于使用键盘,并且会发现键盘不直观),

现在,用户可以通过键盘直接从组合框中选择项目。通过鼠标,我阻止用户根据后面的对象状态选择一些项目。当用户使用键盘时,最好的解决方案是什么

    private void comboBox1_KeyDown(object sender, KeyEventArgs e)
    {
        e.Handled = true;
    }
使用此选项,您可以取消组合框上的所有键盘操作


假设:WinForms

将此类需求引起的可用性问题放在一边(许多用户习惯于使用键盘,并且会发现键盘不直观),您可以简单地处理
按键事件,并将
按键事件args.Cancel
设置为True

private void myCombo_KeyDown(object sender, KeyEventArgs e)
{
   // Cancel the event if Up or Down keys are pressed.
   if ((e.KeyCode == Keys.Down) || (e.KeyCode == Keys.Up))
     e.Handled = true;
}


编辑:在我再次被否决之前进行澄清-这是一个说明该方法的示例。由OP决定他/她不允许哪些密钥。^^

更好、更常见的做法是只在组合框中放入可以选择的项目。它不会阻止键盘的使用(作为一个用户,我会觉得这很冒犯!),也不会简化代码。但在这种情况下,我的客户有权:)如果您有一个带有文本的项目,请说“xyz”,按“x”将选中它。上面的代码不会处理这个问题。我的示例是说明性的。我把某些键盘事件排除在外留给OP。我同意大脑。我看到了这个方法,我用同样的逻辑决定了如何在我的案例中处理它,我认为你的例子范围太广了。请注意,OP上写着“我阻止用户选择某些项目”,请原谅我的评论:)