IRawElementProviderFragmentRoot.ElementProviderFromPoint Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft das Element in diesem Fragment ab, das sich am angegebenen Punkt befindet.
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
Parameter
- x
- Double
Die X-Koordinate.
- y
- Double
Die Y-Koordinate.
Gibt zurück
Der Anbieter für das untergeordnete Element am angegebenen Punkt (sofern vorhanden) oder der Stammanbieter, wenn sich der Punkt auf diesem Element, jedoch nicht auf einem untergeordneten Element befindet. Andernfalls wird null
zurückgegeben.
Beispiele
Das folgende Codebeispiel zeigt eine mögliche Implementierung dieser Methode für ein Listenfeld ohne Bildlauf. Der Index des Listenelements am angegebenen Punkt wird mithilfe der Höhe jedes Elements berechnet, und das Element an diesem Punkt wird zurückgegeben. Wenn an diesem Punkt kein Element vorhanden ist (z. B. ein leerer Bereich des Listenfelds, gibt die Methode einen NULL-Verweis (Nothing
) zurück.
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
Hinweise
Wenn sich der Punkt auf einem Element in einem anderen Framework befindet, das von diesem Fragment gehostet wird, gibt die Methode das Element zurück, das dieses Fragment hosten soll.
Der zurückgegebene Anbieter sollte dem Element entsprechen, das mauseingaben an dem angegebenen Punkt empfangen würde.