【问题标题】:Problems with the KeyPress, KeyDown and KeyUp events in C#C# 中 KeyPress、KeyDown 和 KeyUp 事件的问题
【发布时间】:2011-08-16 11:52:04
【问题描述】:

那么如何开始。 例如,我在问您何时制作游戏并添加控件时,当焦点不在表单上而是在某些控件上以及当我调用 this.Focus() 或 this.Select 时,如何使表单的关键事件运行() 它不会发生任何事情,但是如果我使用空表单(没有控件)它可以工作(事件响应)。当我有例如 2 个按钮并调用 button1.focus() 并按下一个键时 button1 的事件处理程序响应(仅它)然后当我调用 button2.Focus() 它响应 button2.How 焦点分布通过控件? 我知道对于羊肉,您必须单击它们一次才能自动将焦点放在它们上,对于 textboxtes 也是如此,但是当我单击表单时,它不会将焦点移到表单上。

我对关键事件几乎没有经验,请解释一下如何使用它们以及它们如何理解它们的功能。

PS: 抱歉拖了这么久

【问题讨论】:

  • 考虑拆分您的问题。这样更容易回答。
  • 我的一般问题是它们如何运作以及如何使用它们(事件)
  • 是的,我知道。我的建议仍然有效,因为它们是两个独立的问题,恰好触及相同的概念。 =)
  • 好的,我将删除关于 KeyEventArgs 的部分

标签: c# .net keyboard-events


【解决方案1】:

您可以将 Form.KeyPreview 设置为 true 以使表单对关键事件做出反应。

【讨论】:

  • 所以当我将它设置为 true 并且焦点在按钮或其他东西上时,表单会调用它的事件处理程序吗?如果焦点在一个按钮上,该按钮是否也会调用它的键事件处理程序?
  • 如果 KeyPreview 为 true 表单首先响应事件,您仍然需要为表单或类似事件实现 KeyDown。
  • 因此,如果我实现了表单的 keyDown 事件并且 keyPreview 为真,并且我有一个按钮并且焦点位于该按钮上,并且该按钮也与表单的 keyDonw 事件处理程序不同,那么如果我按下首先是窗体的事件处理程序调用,然后是按钮的(或其他具有焦点并具有键事件处理程序的控件)?
  • 我只使用了表单 keyDown 事件或控件的 keyDown,从不同时使用两者。但是msdn说它应该可以工作。 msdn.microsoft.com/en-us/library/…
猜你喜欢
  • 1970-01-01
  • 2016-11-24
  • 2018-02-20
  • 2011-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
相关资源
最近更新 更多