Condividi tramite


WindowClosedEventArgs.GetRuntimeId Metodo

Definizione

Recupera l'identificatore di runtime (ID) Automazione interfaccia utente associato a questo evento.

public:
 cli::array <int> ^ GetRuntimeId();
public int[] GetRuntimeId ();
member this.GetRuntimeId : unit -> int[]
Public Function GetRuntimeId () As Integer()

Restituisce

Int32[]

ID di runtime Automazione interfaccia utente della finestra in cui è stato generato l'evento.

Esempio

Nell'esempio seguente, il gestore per l'evento chiuso dalla finestra verifica se l'ID di runtime della finestra chiusa è in un elenco degli ID delle finestre aperte. Se l'ID runtime è presente, viene rimosso dall'elenco.

/// <summary>
/// Handles window-closed events. Removes the window from the top-level window list.
/// </summary>
/// <param name="sender">Object that raised the event.</param>
/// <param name="e">Event arguments.</param>
/// <remarks>
/// runtimteIds is an ArrayList that contains the runtime IDs of all top-level windows.
/// </remarks>
private void WindowClosedHandler(object sender, AutomationEventArgs e)
{
    WindowClosedEventArgs windowEventArgs = (WindowClosedEventArgs)e;
    int[] runtimeIdentifiers = windowEventArgs.GetRuntimeId();
    int index = RuntimeIdListed(runtimeIdentifiers, savedRuntimeIds);
    if (index >= 0)
    {
        savedRuntimeIds.RemoveAt(index);
        Console.WriteLine("Window closed.");
    }
}

/// <summary>
/// Ascertains whether the window is in the list.
/// </summary>
/// <param name="rid">Runtime ID of the window.</param>
/// <returns>Index of the ID in the list, or -1 if it is not listed.</returns>
/// <remarks>
/// runtimteIds is an ArrayList that contains the runtime IDs of all top-level windows.
/// </remarks>
private int RuntimeIdListed(int[] runtimeId, ArrayList runtimeIds)
{
    for (int x = 0; x < runtimeIds.Count; x++)
    {
        int[] listedId = (int[])runtimeIds[x];
        if (Automation.Compare(listedId, runtimeId))
        {
            return x;
        }
    }
    return -1;
}
''' <summary>
''' Handles window-closed events. Removes the window from the top-level window list.
''' </summary>
''' <param name="sender">Object that raised the event.</param>
''' <param name="e">Event arguments.</param>
''' <remarks>
''' runtimteIds is an ArrayList that contains the runtime IDs of all top-level windows.
''' </remarks>
Private Sub WindowClosedHandler(ByVal sender As Object, ByVal e As AutomationEventArgs) 
    Dim windowEventArgs As WindowClosedEventArgs = CType(e, WindowClosedEventArgs)
    Dim runtimeIdentifiers As Integer() = windowEventArgs.GetRuntimeId()
    Dim index As Integer = RuntimeIdListed(runtimeIdentifiers, savedRuntimeIds)
    If index >= 0 Then
        savedRuntimeIds.RemoveAt(index)
        Console.WriteLine("Window closed.")
    End If

End Sub


''' <summary>
''' Ascertains whether the window is in the list.
''' </summary>
''' <param name="rid">Runtime ID of the window.</param>
''' <returns>Index of the ID in the list, or -1 if it is not listed.</returns>
''' <remarks>
''' runtimteIds is an ArrayList that contains the runtime IDs of all top-level windows.
''' </remarks>
Private Function RuntimeIdListed(ByVal runtimeId() As Integer, ByVal runtimeIds As ArrayList) As Integer 
    Dim x As Integer
    For x = 0 To runtimeIds.Count - 1
        Dim listedId As Integer() = CType(runtimeIds(x), Integer())
        If Automation.Compare(listedId, runtimeId) Then
            Return x
        End If
    Next x
    Return - 1

End Function 'RuntimeIdListed

Commenti

Quando l'applicazione riceve un evento chiuso dalla finestra, il sender parametro del gestore eventi non può essere usato per ottenere informazioni sulla finestra chiusa, perché l'elemento Microsoft Automazione interfaccia utente corrispondente non è più valido. Usare GetRuntimeId per corrispondere alla finestra con un identificatore noto.

Si applica a