C# WPF 捕获键盘和鼠标

Jim*_*mmy 3 c# wpf mouseevent keyboard-events

所以我有一个 WPF 窗口来捕获图像上的鼠标事件。我通过以下代码执行此操作:

<Image Name="imgPrimaryImage" Width="512" Height="512" RenderOptions.BitmapScalingMode="NearestNeighbor" Margin="5"
       Source="{Binding Path=ImageMgr.ImageSource}"
                 MouseLeftButtonDown="OnMouseLeftButtonDown" 
                 MouseMove="OnMouseMove"
                 MouseLeftButtonUp="OnMouseLeftButtonUp"/>
Run Code Online (Sandbox Code Playgroud)

应用程序功能:当用户左右移动鼠标时,只要按下鼠标左键,就会改变图像的大小。

问题: 在捕获鼠标移动事件的同时是否也可以捕获键盘事件。

最终结果: 我希望能够根据按下的 CTRL 和 SHIFT 来更改鼠标速度。我有更改鼠标速度所需的代码,我只是想知道如何获得它,以便如果用户在按住 CTRL 的同时左键单击并拖动图像,它会改变速度。

如果有人对此有任何见解(即文章、文献或建议),那就太好了。谢谢您,如果需要任何其他信息,请告诉我。

dko*_*ozl 5

总结一下,如果您想检查键盘按键的状态,您可以使用Keyboard提供IsKeyDown方法的类

var isShift = Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift);
var isCtrl = Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl);
var isAlt = Keyboard.IsKeyDown(Key.LeftAlt) || Keyboard.IsKeyDown(Key.RightAlt);
Run Code Online (Sandbox Code Playgroud)

或使用其Modifiers财产

var isShift = Keyboard.Modifiers.HasFlag(ModifierKeys.Shift);
var isCtrl = Keyboard.Modifiers.HasFlag(ModifierKeys.Control);
var isAlt = Keyboard.Modifiers.HasFlag(ModifierKeys.Alt);
Run Code Online (Sandbox Code Playgroud)