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のような以前の回答は私には機能しませんでした。これらの値は常にfalseです。デバッグ中に、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バリアントや、XButton1Pressed、XButton2ReleasedなどのXButtonバリアントなどのオプションがあります。

于 2019-07-12T22:42:48.057 に答える