IRawElementProviderFragmentRoot.ElementProviderFromPoint 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
지정된 지점에 있는 이 조각에서 요소를 검색합니다.
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
매개 변수
- x
- Double
X 좌표입니다.
- y
- Double
Y 좌표입니다.
반환
존재하는 경우 지정된 지점에서 자식 요소의 공급자이거나 지점이 이 요소에 있지만 자식 요소에 없는 경우 루트 공급자입니다. 그렇지 않으면 null
를 반환합니다.
예제
다음 코드 예제에서는 스크롤하지 않는 목록 상자에 대해 이 메서드를 구현할 수 있는 한 가지 방법을 보여줍니다. 지정한 지점에 있는 목록 항목의 인덱스는 각 항목의 높이를 사용하여 계산되고 해당 시점의 항목이 반환됩니다. 해당 시점에 항목이 없으면(예: 목록 상자의 빈 영역인 경우) 메서드는 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
설명
점이 이 조각에 의해 호스팅되는 다른 프레임워크의 요소에 있는 경우 메서드는 해당 조각을 호스트하는 요소를 반환합니다.
반환된 공급자는 지정된 지점에서 마우스 입력을 수신하는 요소에 해당해야 합니다.