Auf Englisch lesen

Teilen über


GridPattern.GetItem(Int32, Int32) Methode

Definition

Ruft ein AutomationElement ab, das die angegebene Zelle darstellt.

C#
public System.Windows.Automation.AutomationElement GetItem(int row, int column);

Parameter

row
Int32

Die Ordinalzahl der betreffenden Zeile.

column
Int32

Die Ordinalzahl der betreffenden Spalte.

Gibt zurück

Ein AutomationElement, das die angegebene Zelle darstellt.

Ausnahmen

Die angeforderte Zeilen- oder Spaltenkoordinate ist kleiner als 0 (null).

- oder -

Die angeforderte Zeilenkoordinate ist größer als der RowCount, oder die Spaltenkoordinate ist größer als der ColumnCount.

Beispiele

Im folgenden Beispiel wird ein AutomationFocusChangedEvent Listener deklariert, um den Durchgang von Rasterelementen in einem Rastercontainer nachzuverfolgen. Elementeigenschaften werden bei jedem Fokusänderungsereignis an die Konsole wiedergegeben.

C#
///--------------------------------------------------------------------
/// <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);
}
C#
///--------------------------------------------------------------------
/// <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);
}

Hinweise

Rasterkoordinaten sind nullbasiert, wobei die obere linke (oder die obere rechte Zelle je nach Gebietsschema) Koordinaten (0,0) aufweist.

Wenn eine Zelle leer ist, wird weiterhin ein UI Automation-Element zurückgegeben, um den Abruf der ContainingGrid Eigenschaft für diese Zelle zu unterstützen. Dies ist möglich, wenn das Layout untergeordneter Elemente im Raster einem zerklüfteten Array ähnelt, wie hier gezeigt.

Windows Explorer Ansicht mit zerklüfteten Layout.
Beispiel für ein Grid-Steuerelement mit leeren Koordinaten

Gilt für:

Produkt Versionen
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10