在SurfaceControl上没有引发sdl.net键盘事件

时间:2012-05-24 20:58:47

标签: sdl.net

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

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

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

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

我的问题是每个键都没有引发keyboardDown事件...... 它在A-Z逃生NumLock进入空间F1-12暂停主页删除。 它不会在Ctrl Shift选项卡上引发返回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。

按下A-Z时我需要检测:好的 如果按下Ctrl / Shift / Alt,我需要检测:NOT OK

有什么想法吗?谢谢。

1 个答案:

答案 0 :(得分:1)

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

实际上,除了PreviewKeyDown之外还有KeyDown和KeyUp事件,但它们不会显示在属性窗口(Visual Studio 2010)中,并且这些事件可以正常工作。 与鼠标事件不同,这些事件需要关注控件(Control.Select()给出焦点)。

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

解决。