Partager via


IRawElementProviderFragmentRoot.ElementProviderFromPoint Méthode

Définition

Récupère l’élément de ce fragment qui se trouve au point spécifié.

public:
 System::Windows::Automation::Provider::IRawElementProviderFragment ^ ElementProviderFromPoint(double x, double y);
public System.Windows.Automation.Provider.IRawElementProviderFragment ElementProviderFromPoint (double x, double y);
abstract member ElementProviderFromPoint : double * double -> System.Windows.Automation.Provider.IRawElementProviderFragment
Public Function ElementProviderFromPoint (x As Double, y As Double) As IRawElementProviderFragment

Paramètres

x
Double

Coordonnée X.

y
Double

Coordonnée Y.

Retours

IRawElementProviderFragment

Fournisseur pour l’élément enfant au point spécifié, le cas échéant, ou fournisseur racine si le point se trouve sur cet élément mais sur aucun élément enfant. Sinon, retourne null.

Exemples

L’exemple de code suivant montre une implémentation possible de cette méthode pour une zone de liste sans défilement. L’index de l’élément de liste au point spécifié est calculé à l’aide de la hauteur de chaque élément, et l’élément à ce stade est retourné. Si aucun élément n’existe à ce stade (par exemple, il s’agit d’une zone vide de la zone de liste, la méthode retourne une référence Null (Nothing).

delegate Rectangle MyDelegate(Rectangle clientRect);

/// <summary>
/// Gets the child element that is at the specified point.
/// </summary>
/// <param name="x">Distance from the left of the application window.</param>
/// <param name="y">Distance from the top of the application window.</param>
/// <returns>The provider for the element at that point.</returns>
IRawElementProviderFragment IRawElementProviderFragmentRoot.ElementProviderFromPoint(
    double x, double y)
{
    // The RectangleToScreen method on the control can't be called directly from 
    // this thread, so use delegation.
    MyDelegate del = new MyDelegate(this.RectangleToScreen);
    Rectangle screenRectangle = (Rectangle)this.Invoke(del, new object[] { this.DisplayRectangle });

    if (screenRectangle.Contains((int)x, (int)y))
    {
        int index = (int)(((int)(y - screenRectangle.Y)) / itemHeight);
        if (index < myItems.Count)
        {
            return (IRawElementProviderFragment)myItems[index];
        }
        else
        {
            return (IRawElementProviderFragment)this;
        }
    }
    else
    {
        return null;
    }
}
Delegate Function MyDelegate(ByVal clientRect As Rectangle) As Rectangle

''' <summary>
''' Gets the child element that is at the specified point.
''' </summary>
''' <param name="x">Distance from the left of the application window.</param>
''' <param name="y">Distance from the top of the application window.</param>
''' <returns>The provider for the element at that point.</returns>
Function ElementProviderFromPoint(ByVal x As Double, ByVal y As Double) As IRawElementProviderFragment _
    Implements IRawElementProviderFragmentRoot.ElementProviderFromPoint

    Dim pointX As Integer = CInt(x)
    Dim pointY As Integer = CInt(y)

    ' The RectangleToScreen method on the control can't be called directly from 
    ' this thread, so use delegation.
    Dim converterDelegate As MyDelegate = New MyDelegate(AddressOf Me.RectangleToScreen)
    Dim screenRectangle As Rectangle = DirectCast(Me.Invoke(converterDelegate, _
        New Object() {Me.DisplayRectangle}), Rectangle)
    If screenRectangle.Contains(pointX, pointY) Then
        Dim index As Integer = CInt((pointY - screenRectangle.Y) \ itemHeight)
        If index < myItems.Count Then
            Return DirectCast(myItems(index), IRawElementProviderFragment)
        Else
            Return DirectCast(Me, IRawElementProviderFragment)
        End If
    Else
        Return Nothing
    End If
End Function

Remarques

Si le point se trouve sur un élément d’un autre framework hébergé par ce fragment, la méthode retourne l’élément qui héberge ce fragment.

Le fournisseur retourné doit correspondre à l’élément qui recevra l’entrée de la souris au point spécifié.

S’applique à

Voir aussi