C# Winform中Keypreview属性和Keypress事件的组合

C# Winform中Keypreview属性和Keypress事件的组合,c#,visual-studio,keypress,keydown,onkeyup,C#,Visual Studio,Keypress,Keydown,Onkeyup,据我所知,在下面的情况下,上述是不可能的。我在这里详细解释 假设我有Form1,并且我将其设置为Keypreview Property=true,而不是 “Keyprees、Keydown和Keyup”事件仅适用于winform,不适用于其子级 对象/组件,如“文本框”、“列表框”等 所以我的问题是:-是否有可能将其用于winforms及其子控件。 Or By Any Other Way 是否可以通过将form1的keyprevie

据我所知,在下面的情况下,上述是不可能的。我在这里详细解释

假设我有Form1,并且我将其设置为Keypreview Property=true,而不是

“Keyprees、Keydown和Keyup”事件仅适用于winform,不适用于其子级

对象/组件,如“文本框”、“列表框”等

所以我的问题是:-是否有可能将其用于winforms及其子控件。

                               Or By Any Other Way
是否可以通过将form1的keypreview属性设置为true来实现窗体和控件?

                               Or By Any Other Way

即使您将该属性设置为true,您仍然能够捕获子控件的事件,但您也能够捕获窗体上的“预览”事件,这基本上为您提供了在平台将事件转发给子控件之前处理事件的权限


这是决定性的。

@Liviu M,建议的链接仅显示窗体收到的击键,而非子控件。这就是示例。您不能将e.Handled属性设置为true,以便事件传播。@Liviu,您的意思是,如果我将form1\u Keydown Eventhandler的e.handle属性设置为true,那么textbox1\u Keypress eventhand的效果会更好吗ler?否。您必须将其设置为false,才能让textbox1捕获关键事件。如果将其设置为true,则基本上是在说“我已处理该事件,请勿转发它。”“@Liviu,这就是问题所在。如果我将form1的keypreview属性设置为true。然后,我将处理form1的Keypress/keydown/和keyup事件。但它不适用于文本框/列表框。还有别的办法吗。有解决办法吗?