Sdílet prostřednictvím


GridPattern.GetItem(Int32, Int32) Metoda

Definice

Načte objekt AutomationElement , který představuje zadanou buňku.

public:
 System::Windows::Automation::AutomationElement ^ GetItem(int row, int column);
public System.Windows.Automation.AutomationElement GetItem (int row, int column);
member this.GetItem : int * int -> System.Windows.Automation.AutomationElement
Public Function GetItem (row As Integer, column As Integer) As AutomationElement

Parametry

row
Int32

Pořadové číslo řádku zájmu.

column
Int32

Pořadové číslo sloupce zájmu.

Návraty

Objekt AutomationElement , který představuje načtenou buňku.

Výjimky

Požadovaná souřadnice řádku nebo sloupce je menší než nula.

-nebo-

Požadovaná souřadnice řádku je větší než RowCount souřadnice sloupce nebo je větší než ColumnCount.

Příklady

V následujícím příkladu je deklarován naslouchací proces, který AutomationFocusChangedEvent sleduje procházení položek mřížky v kontejneru mřížky. Vlastnosti položky se při každé události změny fokusu ozvěnou konzole.

///--------------------------------------------------------------------
/// <summary>
/// Set up grid item event listeners.
/// </summary>
/// <param name="targetControl">
/// The grid item container of interest.
/// </param>
///--------------------------------------------------------------------
private void SetGridItemEventListeners(AutomationElement targetControl)
{
    AutomationFocusChangedEventHandler gridItemFocusChangedListener =
        new AutomationFocusChangedEventHandler(OnGridItemFocusChange);
    Automation.AddAutomationFocusChangedEventHandler(
        gridItemFocusChangedListener);
}
'''--------------------------------------------------------------------
''' <summary>
''' Set up grid item event listeners.
''' </summary>
''' <param name="targetControl">
''' The grid item container of interest.
''' </param>
'''--------------------------------------------------------------------
Private Sub SetGridItemEventListeners( _
ByVal targetControl As AutomationElement)
    Dim gridItemFocusChangedListener As AutomationFocusChangedEventHandler = _
    AddressOf OnGridItemFocusChange
    Automation.AddAutomationFocusChangedEventHandler( _
    gridItemFocusChangedListener)
End Sub
///--------------------------------------------------------------------
/// <summary>
/// Event handler for grid item focus change.
/// Can be used to track traversal of individual grid items 
/// within a grid.
/// </summary>
/// <param name="src">Object that raised the event.</param>
/// <param name="e">Event arguments.</param>
///--------------------------------------------------------------------
private void OnGridItemFocusChange(
    object src, AutomationFocusChangedEventArgs e)
{
    // Make sure the element still exists. Elements such as tooltips
    // can disappear before the event is processed.
    AutomationElement sourceElement;
    try
    {
        sourceElement = src as AutomationElement;
    }
    catch (ElementNotAvailableException)
    {
        return;
    }

    // Gets a GridItemPattern from the source of the event.
    GridItemPattern gridItemPattern = 
        GetGridItemPattern(sourceElement);

    if (gridItemPattern == null)
    {
        return;
    }

    // Gets a GridPattern from the grid container.
    GridPattern gridPattern = 
        GetGridPattern(gridItemPattern.Current.ContainingGrid);

    if (gridPattern == null)
    {
        return;
    }

    AutomationElement gridItem = null;
    try
    {
        gridItem = gridPattern.GetItem(
        gridItemPattern.Current.Row, 
        gridItemPattern.Current.Column);
    }
    catch (ArgumentOutOfRangeException)
    {
        // If the requested row coordinate is larger than the RowCount 
        // or the column coordinate is larger than the ColumnCount.
        // -- OR --
        // If either of the requested row or column coordinates 
        // are less than zero.
        // TO DO: error handling.
    }

    // Further event processing can be done at this point.
    // For the purposes of this sample we just report item properties.
    StringBuilder gridItemReport = new StringBuilder();
    gridItemReport.AppendLine(
        gridItemPattern.Current.Row.ToString()).AppendLine(
        gridItemPattern.Current.Column.ToString()).AppendLine(
        gridItemPattern.Current.RowSpan.ToString()).AppendLine(
        gridItemPattern.Current.ColumnSpan.ToString()).AppendLine(
        gridItem.Current.AutomationId.ToString());
    Console.WriteLine(gridItemReport.ToString());
}

///--------------------------------------------------------------------
/// <summary>
/// Handles our application shutdown.
/// </summary>
/// <param name="args">Event arguments.</param>
///--------------------------------------------------------------------
protected override void OnExit(System.Windows.ExitEventArgs args)
{
    Automation.RemoveAllEventHandlers();
    base.OnExit(args);
}
'''--------------------------------------------------------------------
''' <summary>
''' Event handler for grid item focus change.
''' Can be used to track traversal of individual grid items 
''' within a grid.
''' </summary>
''' <param name="src">Object that raised the event.</param>
''' <param name="e">Event arguments.</param>
'''--------------------------------------------------------------------
Private Sub OnGridItemFocusChange( _
ByVal src As Object, ByVal e As AutomationFocusChangedEventArgs)
    ' Make sure the element still exists. Elements such as tooltips
    ' can disappear before the event is processed.
    Dim sourceElement As AutomationElement
    Try
        sourceElement = DirectCast(src, AutomationElement)
    Catch exc As ElementNotAvailableException
        Return
    End Try

    ' Gets a GridItemPattern from the source of the event.
    Dim gridItemPattern As GridItemPattern = _
    GetGridItemPattern(sourceElement)

    If gridItemPattern Is Nothing Then
        Return
    End If

    ' Gets a GridPattern from the grid container.
    Dim gridPattern As GridPattern = _
    GetGridPattern(gridItemPattern.Current.ContainingGrid)

    If gridPattern Is Nothing Then
        Return
    End If

    Dim gridItem As AutomationElement = Nothing
    Try
        gridItem = gridPattern.GetItem( _
        gridItemPattern.Current.Row, gridItemPattern.Current.Column)
    Catch
        ' If the requested row coordinate is larger than the RowCount 
        ' or the column coordinate is larger than the ColumnCount.
        ' -- OR --
        ' If either of the requested row or column coordinates 
        ' are less than zero.
        ' TO DO: error handling.
    End Try

    ' Further event processing can be done at this point.
    ' For the purposes of this sample we just report item properties.
    Dim gridItemReport As New StringBuilder()
    gridItemReport.AppendLine( _
    gridItemPattern.Current.Row.ToString()).AppendLine( _
    gridItemPattern.Current.Column.ToString()).AppendLine( _
    gridItemPattern.Current.RowSpan.ToString()).AppendLine( _
    gridItemPattern.Current.ColumnSpan.ToString()).AppendLine( _
    gridItem.Current.AutomationId.ToString())
    Console.WriteLine(gridItemReport.ToString())

End Sub


'''--------------------------------------------------------------------
''' <summary>
''' Handles our application shutdown.
''' </summary>
''' <param name="args">Event arguments.</param>
'''--------------------------------------------------------------------
Protected Overrides Sub OnExit(ByVal args As System.Windows.ExitEventArgs) 
    Automation.RemoveAllEventHandlers()
    MyBase.OnExit(args)

End Sub

Poznámky

Souřadnice mřížky jsou založené na nule a levá horní buňka (nebo pravá horní buňka v závislosti na národním prostředí) má souřadnice (0,0).

Pokud je buňka prázdná, je stále vrácen prvek automatizace uživatelského rozhraní, aby bylo možné podporovat načtení vlastnosti pro danou buňku ContainingGrid . To je možné, když je rozložení podřízených prvků v mřížce podobné roztrhané matici, jak je znázorněno tady.

Zobrazení Průzkumníka Windows s roztrhaným rozložením
Příklad ovládacího prvku Mřížka s prázdnými souřadnicemi

Platí pro