C# Winform键盘管理

C# Winform键盘管理,c#,winforms,focus,keyboard-events,C#,Winforms,Focus,Keyboard Events,我想控制winform应用程序的焦点。它由一个自定义列表框和几个其他组件组成。 我希望所有的键盘事件都由我的窗口处理程序管理,以避免特定的控制键处理(例如,当我按下一个字符并且列表框处于焦点时,选择以相应字母开头的项目,这对于我的应用程序来说是不正确的行为)。 如何实现这一点?请确保表单的KeyPreview属性设置为true。那么这段代码应该可以用来取消列表框中的键事件 private void Form1_KeyPress(object sender, KeyPressEventArgs e

我想控制winform应用程序的焦点。它由一个自定义列表框和几个其他组件组成。 我希望所有的键盘事件都由我的窗口处理程序管理,以避免特定的控制键处理(例如,当我按下一个字符并且列表框处于焦点时,选择以相应字母开头的项目,这对于我的应用程序来说是不正确的行为)。
如何实现这一点?

请确保表单的KeyPreview属性设置为true。那么这段代码应该可以用来取消列表框中的键事件

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (this.ActiveControl == listBox1)
        e.Handled = true;
}

按键事件可能不适用于所有场景。在这种情况下,我将尝试KeyDown事件。

将e.Handled设置为true是否会放弃按键?是。基本上,您是在告诉事件您处理了键事件,您不希望它对它做任何事情。事实上,我使用了KeyDown来处理以下两种情况:-键入字符时,列表项未被选中。-当点击向上/向下箭头时,列表项选择不会改变。请编辑您的答案,以便我将其标记为已接受。Hmmm。您使用的是什么版本的framework/visual studio?对我来说,处理按键向下仅适用于向上/向下箭头。如果我不想让字母选择列表框项目,我必须处理按键。您正在使用开箱即用的listbox控件吗?