想知道有没有其他人有这个问题。在 El Capitan 上的 Parallels 11 中使用 Windows 10 VM 时,如果您在按下鼠标键的鼠标事件中,您似乎无法检查修饰键。
我正在观察鼠标当前是否按下,Parallels 仅在鼠标按钮或不同的非修改键盘键更改状态时发送/存储修改键更改(或释放不同的修改键,但在按下时没有)。
所以......有人知道如何解决这个问题吗?我们绝对希望支持 Parallels。(我也向他们提交了一个关于这个问题的错误,因为它看起来肯定是错误的。)
这是代码。只需创建一个新项目并将其粘贴到主窗口的代码隐藏中。
bool isDragging;
protected override void OnMouseDown(MouseButtonEventArgs e)
{
if(e.ClickCount == 1 && e.ChangedButton == MouseButton.Left)
{
e.Handled = true;
isDragging = true;
CaptureMouse();
}
base.OnMouseDown(e);
}
protected override void OnMouseMove(MouseEventArgs e)
{
if(isDragging)
{
e.Handled = true;
Title = "Pressed: " + (Keyboard.Modifiers == ModifierKeys.Shift);
}
base.OnMouseMove(e);
}
protected override void OnMouseUp(MouseButtonEventArgs e)
{
if(isDragging && e.ChangedButton == MouseButton.Left)
{
e.Handled = true;
isDragging = false;
ReleaseMouseCapture();
}
base.OnMouseUp(e);
}