0

我正在使用 SdlDotNet 6.1,我喜欢它 :)

我的 SurfaceControl WinForm 控件(pictureBox),我没有收到按键向上和向下事件所有其他事件(MouseDown、MouseMotion、Tick)似乎只有在调用 Events.Run()(锁定线程......)后才起作用

WinForm 事件“PreviewKeyDown”也没有引发。

我发现 SurfaceControl 需要焦点来引发这些事件。我在 MouseMove 事件上使用 mySurfaceControl.Select() 来强制关注它。

我的问题是keyboardDown事件不是在每个键上引发的......它在AZ Escape NumLock Enter Space F1-12 Pause Home Delete上引发。它不会在 Ctrl Shift Tab 返回 1-9 1-9(num) 个箭头​​符号上引发。Alt 和 Alt-Gr 被提升为 Keys.Menu。

我的 Azerty 键盘(对不起,我是法国人)不是原因,我在 Qwerty 模式下进行了测试。

在 WinForm 事件“PreviewKeyDown”上检测到所有键,但 WinForm 不提供 PreviewKeyup 事件...

所以 Keyboard.IsKeyPressed 总是返回 false 并且 KeyboardState 返回 323 false 但 Events.IsEventEnabled() 是 true。

我需要检测何时按下 AZ:好的 我需要检测是否按下了 Ctrl/Shift/Alt:不可以

有任何想法吗 ?谢谢你。

4

1 回答 1

1

我尝试了 IsInputKey=true (在 PreviewKeyDownArgs 中),但对 SDL 事件没有影响。

实际上,除了 PreviewKeyDown 之外,还有 KeyDown 和 KeyUp 事件,但它们不显示在属性窗口(Visual Studio 2010)中,并且这些事件有效。与鼠标事件不同,这些事件需要将焦点放在控件上(Control.Select() 提供焦点)。

这些事件对我有帮助,即使 KeyboardState 会更容易!

解决了。

于 2012-05-25T09:41:06.230 回答