InvokePattern.Invoke 方法

定義

傳送要求以啟動控制項,並啟始其單一明確的動作。Sends a request to activate a control and initiate its single, unambiguous action.

public:
 void Invoke();
public void Invoke ();
member this.Invoke : unit -> unit
Public Sub Invoke ()

例外狀況

此項目不支援 InvokePattern 控制項模式,或是處於隱藏或封鎖狀態。The element does not support the InvokePattern control pattern or is hidden or blocked.

項目未啟用。The element is not enabled. 當使用者介面自動化提供者對 IsEnabled 屬性已實作自己的處理方式時會引發。Can be raised when a UI Automation provider has implemented its own handling of the IsEnabled property.

範例

在下列範例中, InvokePattern 會從控制項取得控制項模式,並 Invoke 呼叫方法。In the following example an InvokePattern control pattern is obtained from a control and the Invoke method is called.

///--------------------------------------------------------------------
/// <summary>
/// Obtains an InvokePattern control pattern from a control
/// and calls the InvokePattern.Invoke() method on the control.
/// </summary>
/// <param name="targetControl">
/// The control of interest.
/// </param>
///--------------------------------------------------------------------
private void InvokeControl(AutomationElement targetControl)
{
    InvokePattern invokePattern = null;

    try
    {
        invokePattern =
            targetControl.GetCurrentPattern(InvokePattern.Pattern)
            as InvokePattern;
    }
    catch (ElementNotEnabledException)
    {
        // Object is not enabled
        return;
    }
    catch (InvalidOperationException)
    {
        // object doesn't support the InvokePattern control pattern
        return;
    }

    invokePattern.Invoke();
}
'''--------------------------------------------------------------------
''' <summary>
''' Obtains an InvokePattern control pattern from a control
''' and calls the InvokePattern.Invoke() method on the control.
''' </summary>
''' <param name="targetControl">
''' The control of interest.
''' </param>
'''--------------------------------------------------------------------
Private Sub InvokeControl(ByVal targetControl As AutomationElement) 
    Dim invokePattern As InvokePattern = Nothing
    
    Try
        invokePattern = _
        DirectCast(targetControl.GetCurrentPattern(invokePattern.Pattern), _
        InvokePattern)
    Catch e As ElementNotEnabledException
        ' Object is not enabled.
        Return
    Catch e As InvalidOperationException
        ' Object doesn't support the InvokePattern control pattern
        Return
    End Try
    
    invokePattern.Invoke()

End Sub

備註

呼叫應該會立即傳回, Invoke 而不會封鎖。Calls to Invoke should return immediately without blocking. 不過,此行為完全取決於 Microsoft 消費者介面自動化提供者的執行。However, this behavior is entirely dependent on the Microsoft UI Automation provider implementation. 在呼叫 Invoke 造成封鎖問題 (例如強制回應對話方塊的情況下) 可能需要個別的 helper 執行緒才能呼叫方法。In scenarios where calling Invoke causes a blocking issue (such as a modal dialog) a separate helper thread may be required to call the method.

適用於