Udostępnij za pośrednictwem


IRawElementProviderFragmentRoot.ElementProviderFromPoint Metoda

Definicja

Pobiera element w tym fragmentcie, który znajduje się w określonym punkcie.

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

Parametry

x
Double

Współrzędna X.

y
Double

Współrzędna Y.

Zwraca

IRawElementProviderFragment

Dostawca elementu podrzędnego w określonym punkcie, jeśli istnieje, lub dostawca główny, jeśli punkt znajduje się na tym elemecie, ale nie w żadnym elemecie podrzędnym. W przeciwnym razie zwraca wartość null.

Przykłady

Poniższy przykład kodu przedstawia jedną z możliwych implementacji tej metody dla pola listy bez przewijania. Indeks elementu listy w określonym punkcie jest obliczany przy użyciu wysokości każdego elementu, a element w tym punkcie jest zwracany. Jeśli żaden element nie istnieje w tym momencie (na przykład jest to pusty obszar pola listy, metoda zwraca odwołanie o wartości 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

Uwagi

Jeśli punkt znajduje się na elemecie w innej strukturze hostowanej przez ten fragment, metoda zwraca element hostujący ten fragment.

Zwrócony dostawca powinien odpowiadać elementowi, który odbiera dane wejściowe myszy w określonym punkcie.

Dotyczy

Zobacz też