Quantcast
Channel: かずきのBlog@hatena
Viewing all articles
Browse latest Browse all 1387

タッチ?マウス?スタイラス?

$
0
0

気になったのでTouchとMouseとStylusイベントの動きを軽く見てみました。軽くというのは時間がないので****Down系イベントだけ拾ってみました。Backgroundを指定したBorderを置いてCheckBoxを3つおく。

<Window x:Class="StylusCheckApp.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="MainWindow"Height="350"Width="525"><Grid><Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition/></Grid.RowDefinitions><Border BorderBrush="Black"BorderThickness="1"Margin="10"Grid.Row="3"StylusDown="Border_StylusDown"MouseDown="Border_MouseDown"TouchDown="Border_TouchDown"Background="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/><CheckBox x:Name="checkBoxStylus"Content="Handle Stylus"Margin="10"/><CheckBox x:Name="checkBoxMouse"Content="Handle Mouse"Grid.Row="1"Margin="10"/><CheckBox x:Name="checkBoxTouch"Content="Handle Touch"Grid.Row="2"Margin="10"/></Grid></Window>

んで、コードビハインドでデバッグログを吐くだけ。

using System.Diagnostics;
using System.Windows;
using System.Windows.Input;

namespace StylusCheckApp
{
    publicpartialclass MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        privatevoid Border_StylusDown(object sender, StylusDownEventArgs e)
        {
            Debug.WriteLine("StylusDown");
            e.Handled = this.checkBoxStylus.IsChecked.Value;
        }

        privatevoid Border_MouseDown(object sender, MouseButtonEventArgs e)
        {
            Debug.WriteLine("MouseDown");
            e.Handled = this.checkBoxMouse.IsChecked.Value;
        }

        privatevoid Border_TouchDown(object sender, TouchEventArgs e)
        {
            Debug.WriteLine("TouchDown");
            e.Handled = this.checkBoxTouch.IsChecked.Value;
        }
    }
}

実行してみる。

マウスクリック
MouseDown

タッチ
StylusDown
TouchDown
MouseDown

スタイラスでツン
StylusDown
MouseDown

ちょっとびっくりしたのがタッチしても最初のイベントはスタイラス。ほほう…。ではStylusでHandledをTrueにすると…。

マウスクリック
MouseDown

タッチ
StylusDown
MouseDown

スタイラスでツン
StylusDown
MouseDown

タッチイベントはスキップされたけどマウスイベントにはいっちゃうのか。んじゃ、タッチイベントだけHandledをTrueにすると…。

マウスクリック
MouseDown

タッチ
StylusDown
TouchDown
MouseDown

スタイラスでツン
StylusDown
MouseDown

ほう…。

まとめ

****Down系イベントだけを見るとMouseイベントの前にStylus→Touch→Mouseときたらタッチ操作で、Stylus→MouseときたらスタイラスでMouseだけだとマウスということになります。
Preview****系とか、その他もろもろのStylus*****系イベントとかを駆使すると、もっと何かかわるのかもしれないけど、続きは後日の自分か誰か…。


Viewing all articles
Browse latest Browse all 1387

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>