gpt4 book ai didi

c# - Visual Studio 中 KeyDown 事件、KeyPress 事件和 KeyUp 事件的区别

转载 作者:IT王子 更新时间:2023-10-29 03:46:23 24 4
gpt4 key购买 nike

谁能告诉我KeyDown 事件、KeyPress 事件和KeyUp 事件之间的区别?我检查了 msdn 站点,它并没有解释太多。

谁能用简单的逻辑告诉我每个事件发生的时间?我觉得按下一个键时会发生上述所有事件。那么它们之间的确切区别是什么。

最佳答案

The MSDN documentation清楚地说明了这三个事件发生的顺序:

Key events occur in the following order:

  1. KeyDown
  2. KeyPress
  3. KeyUp

KeyDown当用户按下键盘上的某个键时立即引发,而他们仍然按住它。

KeyPress当键被按下时,字符 键(与 KeyDown 和 KeyUp 不同,后者也为非字符键引发)引发。这是一个比 KeyDown 或 KeyUp 都“更高级别”的事件,因此,EventArgs 中提供了不同的数据。

KeyUp在用户释放键盘上的键后引发。

通常,您应该在应用程序中处理 KeyUp 事件。在用户释放按键之后之前,不应在 UI 中启动操作。由于 KeyUp 是比 KeyPress 更低级别的事件,因此您始终可以轻松获得有关按下的键的大量信息,它甚至可以用于处理非字符键。


但是,关于所有 这些事件,需要注意的是它们仅由具有焦点的控件引发。这意味着如果您的表单上的按钮控件当前具有焦点,则您的表单 的任何关键事件都不会引发。对于 .NET 的新程序员来说,这通常会让他们感到困惑。处理此问题的最佳方法是覆盖表单的 ProcessCmdKey method。 :

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == (Keys.Control | Keys.A))
{
MessageBox.Show("You pressed Ctrl+A!");
}
return base.ProcessCmdKey(ref msg, keyData);
}

关于c# - Visual Studio 中 KeyDown 事件、KeyPress 事件和 KeyUp 事件的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5871383/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com