WindowClosedEventArgs.GetRuntimeId 方法

定义

检索与此事件关联的UI 自动化运行时标识符 (ID) 。

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

返回

Int32[]

引发事件的窗口的UI 自动化运行时 ID。

示例

在以下示例中,窗口关闭事件的处理程序确定关闭窗口的运行时 ID 是否位于打开窗口的 ID 列表中。 如果运行时 ID 存在,则会将其从列表中删除。

/// <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

注解

当应用程序收到窗口关闭事件时,sender事件处理程序的 参数不能用于获取有关已关闭的窗口的信息,因为相应的 Microsoft UI 自动化 元素不再有效。 使用 GetRuntimeId 将窗口与已知标识符匹配。

适用于