IRawElementProviderFragmentRoot.ElementProviderFromPoint Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Načte prvek v tomto fragmentu, který je v zadaném bodě.
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
Souřadnice X.
- y
- Double
Souřadnice Y.
Návraty
Zprostředkovatel podřízeného elementu v zadaném bodu, pokud existuje, nebo kořenový zprostředkovatel, pokud je bod na tomto prvku, ale ne u žádného podřízeného elementu. Jinak vrací null
.
Příklady
Následující příklad kódu ukazuje jednu z možných implementací této metody pro seznam, který se neposouvá. Index položky seznamu v zadaném bodu se vypočítá pomocí výšky každé položky a položka v tomto okamžiku se vrátí. Pokud v tomto okamžiku neexistuje žádná položka (například je to prázdná oblast seznamu, vrátí metoda nulový odkaz (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
Poznámky
Pokud je bod na elementu v jiné rozhraní hostované tímto fragmentem, metoda vrátí prvek, který je hostitelem tohoto fragmentu.
Vrácený poskytovatel by měl odpovídat prvku, který by přijímal vstup myši v zadaném bodě.