我需要在对我的控件进行拖放操作时(即在 DragEnter 和 DragLeave 之间)响应按键事件(O、C、G 键等,而不是修改键)。但是,在此阶段不会调用 KeyDown 事件。
我已经尝试选择我的控件并专门将焦点设置在 DragEnter 上,但这不起作用。
编辑:
Hans 的回答基本上是正确的,除了我必须使用 GetAsynchKeyState 来获得我想要的行为。
最佳答案
QueryContinueDrag 事件在拖动时引发来源。检查您感兴趣的键的状态将需要 pinvoke,该事件仅用于帮助识别 Escape 键和修改键状态更改。需要记住的是,这些键有任何特殊作用是非常不可发现的。
[DllImport("user32.dll")]
private static extern short GetKeyState(Keys key);
当按键按下时,它返回一个 < 0 的值。我不能说它一定能正常工作,但在我尝试时它看起来不错。
关于winforms - 在拖放过程中处理 KeyDown,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4383244/