10

如何在 Metro 风格 C# 应用程序中获取按下指针的类型(鼠标左键或鼠标右键)?我没有MouseLeftButtonDown 在任何 Metro 风格 UI 元素中找到事件处理程序。我应该改用PointerPressed事件,但我不知道如何获取按下了哪个按钮。

4

3 回答 3

14

PointerPressed 足以处理鼠标按钮:

void MainPage_PointerPressed(object sender, PointerRoutedEventArgs e)
{
    // Check for input device
    if (e.Pointer.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Mouse)
    {
        var properties = e.GetCurrentPoint(this).Properties;
        if (properties.IsLeftButtonPressed)
        {
            // Left button pressed
        }
        else if (properties.IsRightButtonPressed)
        {
            // Right button pressed
        }
    }
}
于 2012-12-16T20:03:20.637 回答
3

您可以使用以下事件来确定使用的指针和按下的按钮。

private void Target_PointerMoved(object sender, PointerRoutedEventArgs e)
{
    Windows.UI.Xaml.Input.Pointer ptr = e.Pointer;
    Windows.UI.Input.PointerPoint ptrPt = e.GetCurrentPoint(Target);

    if (ptrPt.Properties.IsLeftButtonPressed)
    {
        //Do stuff
    }
    if (ptrPt.Properties.IsRightButtonPressed)
    {
        //Do stuff
    }
}
于 2012-12-16T19:56:03.283 回答
1

处理 UWP 项目和以前的答案(如 Properties.IsLeftButtonPressed/IsRightButtonPressed)对我不起作用。这些值总是错误的。我在调试期间意识到 Properties.PointerUpdateKind 正在根据鼠标按钮进行更改。这是对我有用的结果:

var properties = e.GetCurrentPoint(this).Properties;
if (properties.PointerUpdateKind == Windows.UI.Input.PointerUpdateKind.LeftButtonReleased)
{

}
else if (properties.PointerUpdateKind == Windows.UI.Input.PointerUpdateKind.RightButtonReleased)
{

}
else if (properties.PointerUpdateKind == Windows.UI.Input.PointerUpdateKind.MiddleButtonReleased)
{

}

PointerUpdateKind 中有更多选项,例如示例中的 ButtonPressed 品种和 XButton 品种,例如 XButton1Pressed、XButton2Released 等。

于 2019-07-12T22:42:48.057 回答