C#学习教程:KeyDown事件不会从网格中引发我需要在按下某个键时捕获事件。但是当我点击网格区域然后按下一个键时它并没有上升。它仅在文本框获得焦点时有效。我知道如果我从Window捕获它会起作用。但是我有其他应用程序几乎没有用户控件,我需要从不同的应用程序中捕获它。我尝试为Window设置Focusable.false,为Grid设置true,但没有帮助。有解决办法吗?这很奇怪。这显然是一个焦点问题,我仍然无法弄清楚为什么即使我们点击它,网格也没有获得焦点。不过有一个解决方法:为网格的加载事件创建一个处理程序:然后强制关注您的代码:你的keydown事件会在那之后起作用。希望能帮到你。我在通用Windows平台(UWP)应用程序中遇到了同样的问题。我将事件附加到XAML中的网格,但它仅在焦点位于TextBox上时才有效。我在MSDN上找到了答案(不仅仅是解决方法):https://social.msdn.microsoft.com/Forums/en-US/56272bc6-6085-426a-8939-f48d71ab12ca/page-keydown-event-not-firing?Forum=winappswithcsharp总之,根据这篇文章,该事件不会触发,因为当失去对TextBox的关注时,它会向上传递,因此Grid将无法获得它。应该改用Window.Current.CoreWindow.KeyDown。我已经将事件处理程序添加到页面加载事件中,如下所示:privatevoidPage_Loaded(objectsender,RoutedEventArgse){Window.Current.CoreWindow.KeyUp+=CoreWindow_KeyUp;这对我来说是意料之中的。我尝试使用Focus方法,但没有用,直到我将Focusable属性设置为true(默认为False。)以上是C#学习教程:KeyDowneventdoesnotfirefromthegrid。分享全部内容,如果对大家有用,需要了解更多C#学习教程,希望大家多加关注-本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
