PointerPressed:左或右按钮?

时间:2012-12-16 18:50:50

标签: c# windows-8 microsoft-metro

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

3 个答案:

答案 0 :(得分:9)

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
        }
    }
}

答案 1 :(得分: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
    }
}

答案 2 :(得分:0)

从事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等。