Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 直到I ALT+;Tab离开,然后返回到我的应用程序_.net_Winforms_Keyboard - Fatal编程技术网

.net 直到I ALT+;Tab离开,然后返回到我的应用程序

.net 直到I ALT+;Tab离开,然后返回到我的应用程序,.net,winforms,keyboard,.net,Winforms,Keyboard,我的Windows窗体遇到了一个非常奇怪的问题。正如标题中所述,在应用程序中根本不会触发KeyUp事件,直到I alt+tab离开窗口,然后返回。在切换之前,我在应用程序中单击的位置无关紧要;什么也没发生 另外,如果我将alt tab键从应用程序中移开,但单击应用程序的任务栏切换回来,那么我仍然不会获得KeyUp事件。单击离开,然后按住alt键返回,使KeyUp事件再次正常运行 似乎只有当我将Tab键切换到应用程序时,我才会得到KeyUp事件,但在任何其他情况下都不会 KeyPreview属性为

我的Windows窗体遇到了一个非常奇怪的问题。正如标题中所述,在应用程序中根本不会触发KeyUp事件,直到I alt+tab离开窗口,然后返回。在切换之前,我在应用程序中单击的位置无关紧要;什么也没发生

另外,如果我将alt tab键从应用程序中移开,但单击应用程序的任务栏切换回来,那么我仍然不会获得KeyUp事件。单击离开,然后按住alt键返回,使KeyUp事件再次正常运行

似乎只有当我将Tab键切换到应用程序时,我才会得到KeyUp事件,但在任何其他情况下都不会

KeyPreview属性为
true
。我没有在任何地方的应用程序中执行任何其他键处理-只是在KeyUp事件中

我真的需要这个应用程序能够响应键盘启动事件,特别是在启动后-我不想指示我的用户将alt tab键移开然后返回,只是为了让键盘输入功能正常。有没有人看到这个问题并找到了解决办法


更新:我对这个问题做了更多的修改,并找到了一个解决办法——但这肯定是个难题,我不喜欢。在表单的
OnShown
override中,我添加了对
this.Focus()的调用。我还为
this.LostFocus
添加了一个事件处理程序,它也调用
this.Focus()。这是此应用程序中的唯一形式,因此这一切都不是问题-我只希望了解发生这种情况的原因=(嗯

我将此添加为更新而不是答案,因为这不是答案。哎呀。

也许这有帮助:


我已重写表单的ProcessCmdKey()方法,以便首先“接收”表单中的快捷键。

我最终放弃了使用表单事件-我现在正在为我要捕获的键序列注册一个全局Windows热键,这很好。在我的情况下,热键是全局的并不重要,因为我的应用程序被设计为是唯一一个在表单上使用的应用程序s系统。

这会发生在多台机器上吗?使用全新的WinForms应用程序如何?只有当可以获取键盘焦点的控件接收到一个向下键时,KeyUp才会启动。注意,表单本身通常不会接收击键-编辑和列表/组合框等控件会接收击键。这就是为什么使用
this.focus();
是一种解决方法;您正在强制一些通常不会获得键盘焦点的东西来处理它。肯-有正式的方法来处理这个问题吗?
this.focus()
感觉太像一个乱七八糟的东西了。=(Erik:我怀疑
this.focus()
是一种方法。通常,焦点会转到表单上的第一个控件(位于tab订单顶部的一个)。看起来,如果表单上没有控件,表单本身就无法获得焦点。因此,您必须对其进行设置。此表单是所有信息显示-没有输入焦点控件。而且我的解决方法似乎也不是100%万无一失。=\@shambulator-新应用程序不会出现这种情况,我安装它的每台机器上都会出现这种情况我的申请肯定有问题。