single.php

C# WinUI 3アプリでマウスのホイールを検出するイベントの追加

C# WinUI 3アプリを作っていく途中で、難解だった部分を備忘録的に投稿します。今回はマウスのホイールについてのイベント取得について

PointerWheelChangedを利用

C#で、WinFormsプロジェクトの場合も、ホイールに関するイベントをこんな感じに追加してプロシージャを追加していましたが、WinUI 3でも同じです。インターフェイス部分がXAML形式で構成されているので、タグに属性を追加する感じでイベントを追加していきます。

this.control.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.control_MouseWheel);

難解なのは、その名前。PointerWheelChanged、分からん。接頭文字にMouseが付いていないのは、かなりの難題。

こんな感じで、KeyDownと同様にタグへの属性設定の要領でPointerWheelChangedを追加します。

<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center" KeyDown="Key_Down" PointerWheelChanged="Wheel_Changed">
</StackPanel>

ホイールの挙動取得も結構長い

あとはcsファイルにイベントの実行部を追加します。

private void Wheel_Changed(object sender, PointerRoutedEventArgs e)
{
  var delta = e.GetCurrentPoint((UIElement)sender).Properties.MouseWheelDelta;

  if (delta > 0)
  {
    //ホイール上に廻した
  }
  else
  {
    //ホイール下に廻した
  }

}

ホイールの挙動は[MouseWheelDelta]プロパティを使って取得します。

まとめ

今回は短い記事ですが、WinUI 3 アプリでマウスのホイールが廻された際のイベントを取得する方法を書きました。

WinFormsの時代とは違ってXAMLにイベントを書くのもそうですが、イベント名が[PointerWheelChanged]なのが見つけづらい問題です。

C#のWinUI 3アプリでマウスのホイールイベントを取得したい場合の参考になれば幸いです。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です