C# 偶尔动作的按键

C# 偶尔动作的按键,c#,winforms,C#,Winforms,我有一个全屏覆盖运行在一个窗口无边框游戏的顶部,当我激活我的覆盖按键时,似乎只是有时起作用。它们经常被延迟甚至从未激活。鼠标似乎工作得很好,只是按键偶尔起作用。知道为什么会这样吗 编辑: 我认为我的问题有点误导。当我说按键似乎是零星的时,我的意思是它们在我玩的游戏中是零星的,而不是在我的叠加形式上。我甚至不需要在我的状态中捕捉关键事件的能力,我只需要它在不干扰它的情况下划过游戏窗口。当我激活我的表单并切换回游戏时,控件开始落后,行为异常。就像我说的,尽管鼠标似乎工作得很好。我想出来了。。。我不小

我有一个全屏覆盖运行在一个窗口无边框游戏的顶部,当我激活我的覆盖按键时,似乎只是有时起作用。它们经常被延迟甚至从未激活。鼠标似乎工作得很好,只是按键偶尔起作用。知道为什么会这样吗

编辑:
我认为我的问题有点误导。当我说按键似乎是零星的时,我的意思是它们在我玩的游戏中是零星的,而不是在我的叠加形式上。我甚至不需要在我的状态中捕捉关键事件的能力,我只需要它在不干扰它的情况下划过游戏窗口。当我激活我的表单并切换回游戏时,控件开始落后,行为异常。就像我说的,尽管鼠标似乎工作得很好。

我想出来了。。。我不小心将叠加上的KeyPreview设置为true,这导致游戏接收延迟的按键输入。

您是否尝试过解决此问题,或使用任何代码向我们显示您如何订阅事件?可能是因为叠加中的控件捕捉到按键事件,你需要在那里捕捉它们-例如,如果你创建一个文本框,你将在文本框中捕捉文本框的按键事件,而不是在覆盖中。这可能是一系列的事情,你需要提供更多的信息,比如你是如何捕捉击键的。我的猜测是,无论您是否这样认为,您的输入都与您的游戏ui输出绑定到同一个线程。当游戏界面变得密集时,你的按键可能会被延迟。基本上,我所做的是将窗体设置为最大化无边框和透明的顶部。然后我将不透明度设置为30%。然后,我使用本文中描述的方法钩住键盘按键,当按下“M”键时,根据表单的当前状态调用Hide()或Show()。当我显示表单时,我将ALT+TAB返回游戏。然后我的表单保持在顶部,我可以继续使用覆盖层玩游戏,但正如我所说的,问题是覆盖层显示按键延迟。