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