PointerRoutedEventArgs Class

最後のポインター イベント メッセージによって返される引数を格納します。

ほとんどの場合、選択した Windows 8 の言語フレームワーク (JavaScript を使用する Windows ストア アプリケーション、C++、C#、または Visual Basic を使用する Windows ストア アプリケーション、または C++ の DirectX を使用する Windows ストア アプリケーション) のポインター イベント ハンドラーのイベント引数を経由してポインター情報を 取得することをお勧めします。

イベント引数がアプリケーションで必要なポインターの詳細を基本的に公開しない場合は、PointerRoutedEventArgsGetCurrentPoint メソッドおよび GetIntermediatePoints メソッドによって拡張ポインター データへのアクセスを取得できます。これらのメソッドを使用して、ポインター データのコンテキストを指定します。

静的な PointerPoint メソッドである GetCurrentPoint および GetIntermediatePoints では、常にアプリのコンテキストが使用されます。

継承

Object
  RoutedEventArgs
    PointerRoutedEventArgs

構文


public sealed class PointerRoutedEventArgs : RoutedEventArgs

属性

[MarshalingBehavior(Agile)]
[Threading(Both)]
[Version(0x06020000)]
[WebHostHidden()]

メンバー

PointerRoutedEventArgsクラス には次の種類のメンバーがあります。

メソッド

The PointerRoutedEventArgs クラス には次のメソッドがあります。 また、以下からもメソッドが継承されます。Object クラス.

メソッド説明
GetCurrentPoint Retrieves a PointerPoint object that provides basic info on the pointer associated with the event.
GetIntermediatePoints Retrieves a collection of PointerPoint objects that represent the pointer history from the last pointer event up to and including the current pointer event. Each PointerPoint in the collection provides basic info on the pointer associated with the event.

 

プロパティ

PointerRoutedEventArgsクラス には次のプロパティがあります。

プロパティアクセスの種類説明

Handled

読み取り/書き込みGets or sets a value that marks the routed event as handled, and prevents most handlers along the event route from handling the same event again.

KeyModifiers

読み取り専用Gets a value that indicates which key modifiers were active at the time that the pointer event was initiated.

OriginalSource

読み取り専用Gets a reference to the object that raised the event. (継承元 RoutedEventArgs)

Pointer

読み取り専用Gets a reference to a pointer token.

 

解説

PointerRoutedEventArgs イベント データ クラスはこれらのイベントに対して使用されます。

重要  マウス入力は、マウス入力が最初に検出されたときに割り当てられる単一のポインターに関連付けられます。 マウス ボタン (左、ホイール、右) をクリックすると、PointerPressed イベントを通じて、ポインターとそのボタンの間に 2 番目の関連付けが作成されます。 PointerReleased イベントは、その同じマウス ボタンが離されたときにのみ発生します (このイベントが完了するまで、他のボタンをポインターと関連付けることはできません)。 この排他的な関連付けが原因で、他のマウス ボタン クリックは PointerMoved イベントを通じてルーティングされます。次の例に示すように、このイベントを処理するときにマウス ボタンの状態をテストできます。


private void Target_PointerMoved(object sender, PointerRoutedEventArgs e)
{
    Windows.UI.Xaml.Input.Pointer ptr = e.Pointer;

    // Multiple, simultaneous mouse button inputs are processed here.
    // Mouse input is associated with a single pointer assigned when 
    // mouse input is first detected. 
    // Clicking additional mouse buttons (left, wheel, or right) during 
    // the interaction creates secondary associations between those buttons 
    // and the pointer through the pointer pressed event. 
    // The pointer released event is fired only when the last mouse button 
    // associated with the interaction (not necessarily the initial button) 
    // is released. 
    // Because of this exclusive association, other mouse button clicks are 
    // routed through the pointer move event.          
    if (ptr.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Mouse)
    {
        // To get mouse state, we need extended pointer details.
        // We get the pointer info through the getCurrentPoint method
        // of the event argument. 
        Windows.UI.Input.PointerPoint ptrPt = e.GetCurrentPoint(Target);
        if (ptrPt.Properties.IsLeftButtonPressed)
        {
            eventLog.Text += "\nLeft button: " + ptrPt.PointerId;
        }
        if (ptrPt.Properties.IsMiddleButtonPressed)
        {
            eventLog.Text += "\nWheel button: " + ptrPt.PointerId;
        }
        if (ptrPt.Properties.IsRightButtonPressed)
        {
            eventLog.Text += "\nRight button: " + ptrPt.PointerId;
        }
    }

    // Prevent most handlers along the event route from handling the same event again.
    e.Handled = true;

    // Display pointer details.
    updateInfoPop(e);
}


ハンドラーに関連する可能性があるデータ:

  • sender の値 (これはこのイベント データ クラスではなく、デリゲート シグネチャ上にあります)。
  • KeyModifiersGetCurrentPoint などの PointerRoutedEventArgs の特定のメンバーです。
  • Pointer デバイスの記述クラスの値。Pointer プロパティから Pointer を取得します。
  • PointerPoint のシステム入力の概念化に由来するメンバー。GetCurrentPoint API を使用して、PointerPoint 値を取得し、PositionPointerPointProperties などの PointerPoint API を呼び出します。

固有のイベントには、さまざまなポインター デバイスおよび主にそのイベントのみに関連するポインター ポイント クラスで使用できる情報がよくあります。たとえば、PointerWheelChanged を処理するときに、PointerPointPropertiesMouseWheelDelta に関心がある可能性があります。

次のコード例は、入力サンプルからのシナリオ 2 を示します。このコードは、PointerPressedPointerReleasedPointerEnteredPointerExitedPointerMoved イベントを使用して直接操作のための使用パターンを示しています。


<StackPanel x:Name="Scenario2Output" ManipulationMode="All">
  <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
    <Button x:Name="scenario2Reset" Content="Reset" 
      Margin="0,0,10,0" Click="Scenario2Reset"/>
  </StackPanel>
  <StackPanel Orientation="Horizontal" >
    <ToggleSwitch x:Name="tbPointerCapture" 
      Header="Pointer Capture" FontSize="20"/>
    <TextBlock x:Name="txtCaptureStatus" 
      Style="{StaticResource BasicTextStyle}"/>
  </StackPanel>
  <Border x:Name="bEnteredExited" Background="Red" 
    Height="300" Width="450" CornerRadius="20" 
    HorizontalAlignment="Left">
    <Grid>
      <TextBlock Style="{StaticResource BasicTextStyle}" Text="" 
        HorizontalAlignment="Center" VerticalAlignment="Center" 
        x:Name="bEnteredExitedTextBlock"/>
      <Ellipse VerticalAlignment="Bottom" Stroke="Silver" 
        StrokeDashArray="2,2" StrokeThickness="2" Margin="2" 
        x:Name="bEnteredExitedTimer" Width="20" Height="20" 
        RenderTransformOrigin="0.5,0.5">
        <Ellipse.RenderTransform >
          <RotateTransform Angle="0" />
        </Ellipse.RenderTransform>
      </Ellipse>
    </Grid>
  </Border>
</StackPanel>



int _pointerCount;

public Scenario2()
{
    this.InitializeComponent();
    bEnteredExited.PointerEntered += bEnteredExited_PointerEntered;
    bEnteredExited.PointerExited += bEnteredExited_PointerExited;
    bEnteredExited.PointerPressed += bEnteredExited_PointerPressed;
    bEnteredExited.PointerReleased += bEnteredExited_PointerReleased;
    bEnteredExited.PointerMoved += bEnteredExited_PointerMoved;

    // To code for multiple Pointers (that is, fingers), 
    // we track how many entered/exited.
    _pointerCount = 0;
}

private void bEnteredExited_PointerMoved(object sender, 
    PointerRoutedEventArgs e)
{
    Scenario2UpdateVisuals(sender as Border, "Moved");
}

private void bEnteredExited_PointerReleased(object sender, 
    PointerRoutedEventArgs e)
{
    ((Border)sender).ReleasePointerCapture(e.Pointer);
    txtCaptureStatus.Text = string.Empty;
}

//Can only get capture on PointerPressed (i.e. touch down, mouse click, pen press)
private void bEnteredExited_PointerPressed(object sender, 
    PointerRoutedEventArgs e)
{
    if (tbPointerCapture.IsOn)
    {
        bool _hasCapture = ((Border)sender).CapturePointer(e.Pointer);
        txtCaptureStatus.Text = "Got Capture: " + _hasCapture;
    }
}

private void bEnteredExited_PointerExited(object sender, 
    PointerRoutedEventArgs e)
{
    _pointerCount--;
    Scenario2UpdateVisuals(sender as Border, "Exited");
}

private void bEnteredExited_PointerEntered(object sender, 
    PointerRoutedEventArgs e)
{
    _pointerCount++;
    Scenario2UpdateVisuals(sender as Border, "Entered");
}

private void Scenario2UpdateVisuals(Border border, 
    String eventDescription)
{
    switch (eventDescription.ToLower())
    {
        case "exited":
            if (_pointerCount <= 0)
            {
                border.Background = new SolidColorBrush(Colors.Red);
                bEnteredExitedTextBlock.Text = eventDescription;
            }
            break;
        case "moved":
            RotateTransform rt = 
                (RotateTransform)bEnteredExitedTimer.RenderTransform;
            rt.Angle += 2;
            if (rt.Angle > 360) rt.Angle -= 360;
            break;
        default:
            border.Background = new SolidColorBrush(Colors.Green);
            bEnteredExitedTextBlock.Text = eventDescription;
            break;
    }
}

private void Scenario2Reset(object sender, RoutedEventArgs e)
{
    Scenario2Reset();
}

private void Scenario2Reset()
{
    bEnteredExited.Background = new SolidColorBrush(Colors.Green);
    bEnteredExitedTextBlock.Text = string.Empty;
}


要件

最小限サポートされるクライアント

Windows 8 [Windows ストア アプリのみ]

最小限サポートされるサーバー

Windows Server 2012 [Windows ストア アプリのみ]

名前空間

Windows.UI.Xaml.Input
Windows::UI::Xaml::Input [C++]

メタデータ

Windows.winmd

参照

RoutedEventArgs
PointerPressed

 

 

表示:
© 2015 Microsoft