読者です 読者をやめる 読者になる 読者になる

がりらぼ

WindowsRuntimeの応援ブログ

マウスからの入力を検知するには

WindowsRuntime

マウス入力

WindowsストアアプリはタブレットPC向けと言えど、マウス入力ユーザーもおおいのでマウス入力も欠かせません。

マウス入力は、マウス入力を検知したいコントロールのPointerPressedイベントなどで検知し、様々なPorpertiesを見ます。

 

このようなXAMLを作ります。

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Canvas x:Name="canvas" Margin="316,306,260,76" Background="#FFB67575">

    </Canvas>
    <StackPanel HorizontalAlignment="Left" Height="244" Margin="316,38,0,0" VerticalAlignment="Top" Width="768">
        <TextBlock x:Name="text_position" TextWrapping="Wrap" Text="TextBlock" FontSize="24"/>
        <TextBlock x:Name="text_rightButton" TextWrapping="Wrap" Text="TextBlock" FontSize="24"/>
        <TextBlock x:Name="text_leftButton" TextWrapping="Wrap" Text="TextBlock" FontSize="24"/>
        <TextBlock x:Name="text_wheel" TextWrapping="Wrap" Text="TextBlock" FontSize="24"/>
        <TextBlock x:Name="text_isPointerOn" TextWrapping="Wrap" Text="TextBlock" FontSize="24"/>
    </StackPanel>
</Grid>

 

コンストラクタでマウス入力を検知したいコントロールのイベントを登録しましょう。

this.canvas.PointerPressed+=Canvas_PointerPressed;
this.canvas.PointerReleased+=Canvas_PointerReleased;
this.canvas.PointerMoved+=Canvas_PointerMoved;
this.canvas.PointerWheelChanged+=Canvas_PointerWheelChanged;

 

PointerPressedイベントでマウスの入力押下を検知します。

private void Canvas_PointerPressed(object sender, PointerRoutedEventArgs e)
{
    PointerPoint point=e.GetCurrentPoint(canvas);

    switch (point.PointerDevice.PointerDeviceType)
    {
        case PointerDeviceType.Pen:

        case PointerDeviceType.Mouse:
            text_isPointerOn.Text = string.Format("IsPointerOn={0}", true);
            text_rightButton.Text = string.Format("RightButton={0}",point.Properties.IsRightButtonPressed);
            text_leftButton.Text = string.Format("LeftButton={0}", point.Properties.IsLeftButtonPressed);
            break;
        case PointerDeviceType.Touch:
            break;
    }
    
}

 

PointerMovedイベントでマウスの移動を検知します。

private void Canvas_PointerMoved(object sender, PointerRoutedEventArgs e)
{
    PointerPoint point = e.GetCurrentPoint(canvas);

    switch (point.PointerDevice.PointerDeviceType)
    {
        case PointerDeviceType.Pen:
     
            break;
        case PointerDeviceType.Mouse:
            text_position.Text = string.Format("Position={0},{1}",point.Position.X,point.Position.Y);
            break;
        case PointerDeviceType.Touch:
            break;
    }
}

PointerReleasedイベントでマウスの押上を検知します。

private void Canvas_PointerReleased(object sender, PointerRoutedEventArgs e)
{
    PointerPoint point = e.GetCurrentPoint(canvas);

    switch (point.PointerDevice.PointerDeviceType)
    {
        case PointerDeviceType.Pen:
            
            break;
        case PointerDeviceType.Mouse:
            text_isPointerOn.Text = string.Format("IsPointerOn={0}",false);
            break;
        case PointerDeviceType.Touch:
            break;
    }
}

 

0

マウスからの入力を検知するには | garicchi.com