在WPF中,我们应该如何处理键盘事件?是KeyUp还是KeyDown?

5

我一直在使用WPF中的所有隧道和冒泡事件,我必须说它们非常强大和实用。
但是我总是在考虑是否要使用[PreviewKeyUp和KeyUp]或者[PreviewKeyDown和Keydown]?

应该选择哪种组合来响应按键操作?为什么?


这取决于你想在链中处于什么位置。KeyDowns在KeyUps之前被处理。因此,如果您想在事件处理程序到达之前停止它,请使用KeyDown。请在MSDN上查找事件冒泡和路由事件。 - paparazzo
2个回答

8

根据您想要做什么进行选择:

  1. PreviewKeyDown = 键被按下之前
    示例:如果事件在文本框上,当前按下的键不会添加到TextBox.Text中
  2. PreviewKeyUp = 松开键之前
  3. KeyDown = 键被按下之后
    示例:如果事件在文本框上,当前按下的键将添加到TextBox.Text中
  4. KeyUp = 松开键之后

所以这取决于您想要做什么。如果要添加TextBox验证,请使用PreviewKeyDown忽略不正确的文本。

如果您想在用户松开空格键时执行某些操作,则使用KeyUp


0

这完全取决于情况,例如,在列表中选择项目将需要使用KeyDown,以便可以按住键并更改所选项目。

如果您有一个具有多个视觉状态的元素,例如按钮,则KeyDown可能会更改视觉状态,然后KeyUp将返回视觉到原始状态并执行命令。

在您的情况下,这将完全取决于您希望何时引发事件,我不会说其中任何一个比另一个更好,因为它们用于不同的用途。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接