C# WinUI 3アプリを作っていく途中で、調べたことを忘録的に投稿します。今回はWinUI3プロジェクトでマウスなどのクリックを検出する[PointerPressed]イベントでデバイスやクリックされたボタンの種類を判定する方法です。
[PointerDeviceType]と[PointerPoint]
WinFormの時代は右クリックや左クリックに対応したイベントが用意されていました。
WinUI3では、マウスの他にタッチデバイスなどクリック(PointerPressed)イベントを発生させる機器が増えたので、確認する処理も長くなります。
具体的には、こんな感じでWinUI3プロジェクトでデバイスの種類やイベントを発生させたボタンなどの種類を検出できました。
private void _PointerPressed(object sender, PointerRoutedEventArgs e)
{
Microsoft.UI.Xaml.Input.Pointer ptr = e.Pointer;
if (ptr == null)
{
return;
}
if (ptr.PointerDeviceType == Microsoft.UI.Input.PointerDeviceType.Mouse)
{
Microsoft.UI.Input.PointerPoint ptrPt = e.GetCurrentPoint((UIElement)sender);
if (ptrPt != null)
{
if (ptrPt.Properties.IsLeftButtonPressed == true)
{
//左クリック
}
if (ptrPt.Properties.IsRightButtonPressed== true)
{
//右クリック
}
}
}
}
まとめ
今回は短い記事ですが、WinUI3プロジェクトでマウスなどのクリックを検出する[PointerPressed]イベントでデバイスやクリックされたボタンの種類を判定する方法について紹介しました。
マウスの他にタッチデバイスなどクリック(PointerPressed)イベントを発生させる機器も増えたので、取得前に確認する部分が多くなります。
[PointerDeviceType]と[PointerPoint]を利用してマウスの左ボタンなどの検出が可能でした。
WinUI 3でマウスの左ボタンなどを検出したい人の参考になれば幸いです。
スポンサーリンク
最後までご覧いただき、ありがとうございます。