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のような以前の回答は私には機能しませんでした。これらの値は常に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 に答える