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アプリでマウスのホイールイベントを取得したい場合の参考になれば幸いです。
スポンサーリンク
最後までご覧いただき、ありがとうございます。