PointerRoutedEventArgs-Klasse

PointerRoutedEventArgs Class

Enthält die Argumente, die von der letzten Zeigerereignisnachricht zurückgegeben werden.

In den meisten Fällen wird empfohlen, Zeigerinformationen durch das Ereignisargument der Zeigerereignishandler im ausgewählten Windows 8-Language Framework abzurufen (Windows Store-Apps mit JavaScript, Windows Store-Apps mit C++, C# oder Visual Basic sowie Windows Store-Apps mit DirectX und C++).

Wenn das Ereignisargument die von der App benötigten Zeigerdetails nicht von sich aus offenlegt, können Sie auf die erweiterten Zeigerdaten mit den GetCurrentPoint- und GetIntermediatePoints-Methoden von PointerRoutedEventArgs zugreifen. Verwenden Sie diese Methoden, um den Kontext der Zeigerdaten anzugeben.

Die statischen Methoden PointerPoint, GetCurrentPoint und GetIntermediatePoints verwenden immer den Kontext der App.

Vererbung

Object
  RoutedEventArgs
    PointerRoutedEventArgs

Syntax


Public NotInheritable Class PointerRoutedEventArgs
    Inherits RoutedEventArgs

Attribute

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

Member

PointerRoutedEventArgsKlasse hat diese Membertypen:

Methoden

The PointerRoutedEventArgs Klasse hat diese Methoden. Es erbt auch Methoden von Object Klasse.

MethodeBeschreibung
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.

 

Eigenschaften

Der PointerRoutedEventArgsKlasse hat diese Eigenschaften.

EigenschaftZugriffstypBeschreibung

Handled

Lese-/SchreibzugriffGets 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

SchreibgeschütztGets a value that indicates which key modifiers were active at the time that the pointer event was initiated.

OriginalSource

SchreibgeschütztGets a reference to the object that raised the event. (Geerbt von RoutedEventArgs)

Pointer

SchreibgeschütztGets a reference to a pointer token.

 

Hinweise

Die PointerRoutedEventArgs-Ereignisdatenklasse wird für diese Ereignisse verwendet:

Wichtig  Mauseingaben werden einem einzelnen Zeiger zugeordnet, der zugewiesen wird, wenn die Mauseingabe anfänglich erkannt wird. Wenn auf eine Maustaste geklickt wird (links, Rad oder rechts), wird eine sekundäre Zuordnung zwischen dem Zeiger und dieser Taste vom PointerPressed-Ereignis erstellt. Das PointerReleased-Ereignis wird nur ausgelöst, wenn die gleiche Maustaste losgelassen wird (keine andere Schaltfläche kann dem Zeiger zugeordnet werden, bis dieses Ereignis abgeschlossen ist). Aufgrund dieser exklusiven Zuordnung werden andere Maustastenklicks über das PointerMoved-Ereignis weitergeleitet. Sie können den Maustastenzustand testen, wenn Sie dieses Ereignis behandeln, wie im folgenden Beispiel dargestellt.


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);
}


Folgende Daten können für Ihren Handler relevant sein:

  • Der Wert von sender (auf der Signatur des Delegaten, aber nicht diese Ereignisdatenklasse).
  • Bestimmte Member von PointerRoutedEventArgs, wie KeyModifiers oder GetCurrentPoint.
  • Werte einer Pointer-Gerätebeschreibungsklasse. Über die Eigenschaft Pointer rufen Sie Pointer ab.
  • Member der Systemeingabekonzeptualisierung eines PointerPoint. Rufen Sie mit der GetCurrentPoint-API einen PointerPoint-Wert ab und rufen Sie dann eine PointerPoint-API auf, z. B. Position und PointerPointProperties.

Bestimmte Ereignisse haben häufig verfügbare Informationen in verschiedenen Zeigergerät-Klassen und Zeigerpunkt-Klassen, die hauptsächlich nur für dieses Ereignis relevant sind. Wenn Sie beispielsweise PointerWheelChanged behandeln, sind Sie möglicherweise an MouseWheelDelta von PointerPointProperties interessiert.

Beispiele

Im folgenden Codebeispiel wird Szenario 2 aus dem Eingabebeispiel gezeigt. Dieser Code veranschaulicht einige Verwendungsmuster für die direkte Bearbeitung mithilfe der Ereignisse PointerPressed, PointerReleased, PointerEntered, PointerExited und PointerMoved.


<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>



Private _pointerCount As Integer

Public Sub New()
    Me.InitializeComponent()
    AddHandler bEnteredExited.PointerEntered, AddressOf bEnteredExited_PointerEntered
    AddHandler bEnteredExited.PointerExited, AddressOf bEnteredExited_PointerExited
    AddHandler bEnteredExited.PointerPressed, AddressOf bEnteredExited_PointerPressed
    AddHandler bEnteredExited.PointerReleased, AddressOf bEnteredExited_PointerReleased
    AddHandler bEnteredExited.PointerMoved, AddressOf bEnteredExited_PointerMoved

    'To code for multiple Pointers (i.e. Fingers) we track how many entered/exited.
    _pointerCount = 0
End Sub

''' <summary>
''' Invoked when this page is about to be displayed in a Frame.
''' </summary>
''' <param name="e">Event data that describes how this page was reached.  The Parameter
''' property is typically used to configure the page.</param>
Protected Overrides Sub OnNavigatedTo(e As NavigationEventArgs)
End Sub

Private Sub bEnteredExited_PointerMoved(sender As Object, e As PointerRoutedEventArgs)
    Scenario2UpdateVisuals(TryCast(sender, Border), "Moved")
End Sub

Private Sub bEnteredExited_PointerReleased(sender As Object, e As PointerRoutedEventArgs)
    DirectCast(sender, Border).ReleasePointerCapture(e.Pointer)
    txtCaptureStatus.Text = String.Empty
End Sub

'Can only get capture on PointerPressed (i.e. touch down, mouse click, pen press)
Private Sub bEnteredExited_PointerPressed(sender As Object, e As PointerRoutedEventArgs)
    If tbPointerCapture.IsOn Then
        Dim _hasCapture As Boolean = DirectCast(sender, Border).CapturePointer(e.Pointer)
        txtCaptureStatus.Text = "Got Capture: " & _hasCapture
    End If
End Sub

Private Sub bEnteredExited_PointerExited(sender As Object, e As PointerRoutedEventArgs)
    _pointerCount -= 1
    Scenario2UpdateVisuals(TryCast(sender, Border), "Exited")
End Sub

Private Sub bEnteredExited_PointerEntered(sender As Object, e As PointerRoutedEventArgs)
    _pointerCount += 1
    Scenario2UpdateVisuals(TryCast(sender, Border), "Entered")

End Sub

Private Sub Scenario2UpdateVisuals(border As Border, eventDescription As String)
    Select Case eventDescription.ToLower()
        Case "exited"
            If _pointerCount <= 0 Then
                border.Background = New SolidColorBrush(Colors.Red)
                bEnteredExitedTextBlock.Text = eventDescription
            End If
            Exit Select
        Case "moved"

            Dim rt As RotateTransform = DirectCast(bEnteredExitedTimer.RenderTransform, RotateTransform)
            rt.Angle += 2
            If rt.Angle > 360 Then
                rt.Angle -= 360
            End If
            Exit Select
        Case Else
            border.Background = New SolidColorBrush(Colors.Green)
            bEnteredExitedTextBlock.Text = eventDescription
            Exit Select

    End Select
End Sub

Private Sub Scenario2ResetMethod(sender As Object, e As RoutedEventArgs)
    Reset()
End Sub

Private Sub Reset()
    bEnteredExited.Background = New SolidColorBrush(Colors.Green)
    bEnteredExitedTextBlock.Text = String.Empty
End Sub


Anforderungen

Mindestens unterstützter Client

Windows 8 [Nur Windows Store-Apps]

Mindestens unterstützter Server

Windows Server 2012 [Nur Windows Store-Apps]

Namespace

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

Metadaten

Windows.winmd

Siehe auch

RoutedEventArgs
PointerPressed

 

 

Anzeigen:
© 2016 Microsoft