다음을 통해 공유


UI 자동화 제어 패턴 호출 구현

비고

이 설명서는 System.Windows.Automation 네임스페이스에 정의된 관리되는 UI 자동화 클래스를 사용하려는 .NET Framework 개발자를 위한 것입니다. UI 자동화에 대한 최신 정보는 Windows Automation API: UI 자동화참조하세요.

이 항목에서는 이벤트 및 속성에 대한 정보를 포함하여 구현하기 IInvokeProvider위한 지침과 규칙을 소개합니다. 추가 참조에 대한 링크는 항목 끝에 나열되어 있습니다.

InvokePattern 컨트롤 패턴은 활성화될 때 상태를 유지하지 않고 명확한 단일 작업을 시작하거나 수행하는 컨트롤을 지원하는 데 사용됩니다. 상태를 유지하는 컨트롤인 확인란과 라디오 단추는 각각 IToggleProviderISelectionItemProvider을 구현해야 합니다. Invoke 컨트롤 패턴을 구현하는 컨트롤의 예는 UI 자동화 클라이언트에 대한 컨트롤 패턴 매핑을 참조하세요.

구현 지침 및 규칙

Invoke 컨트롤 패턴을 구현하는 경우 다음 지침 및 규칙을 확인합니다.

  • 컨트롤은 동일한 동작이 다른 컨트롤 패턴 공급자를 통해 노출되지 않는 경우 구현 IInvokeProvider 합니다. 예를 들어, 컨트롤의 Invoke 메서드가 Expand 또는 Collapse 메서드와 동일한 작업을 수행하는 경우 컨트롤은 IInvokeProvider을 구현하지 않아야 합니다.

  • 컨트롤 호출은 일반적으로 ENTER, 미리 정의된 바로 가기 키 또는 키 입력의 대체 조합을 클릭하거나 두 번 클릭하거나 눌러 수행됩니다.

  • InvokedEvent 는 활성화된 컨트롤에서 발생합니다(연결된 작업을 수행하는 컨트롤에 대한 응답으로). 가능하면 컨트롤이 작업을 완료하고 차단 없이 반환된 후에 이벤트가 발생해야 합니다. Invoked 이벤트는 다음 상황에서 Invoke 요청을 처리하기 전에 발생해야 합니다.

    • 작업이 완료될 때까지 기다리는 것은 불가능하거나 실용적이지 않습니다.

    • 작업에는 사용자 상호 작용이 필요합니다.

    • 이 작업은 시간이 오래 걸리며 호출 클라이언트가 상당한 시간 동안 차단됩니다.

  • 컨트롤을 호출하는 데 상당한 부작용이 있는 경우 해당 부작용은 속성을 통해 HelpText 노출되어야 합니다. 예를 들어 Invoke는 선택과 관련이 없지만, Invoke가 다른 컨트롤을 선택되도록 할 수 있습니다.

  • 마우스 오버 효과는 일반적으로 호출된 이벤트를 구성하지 않습니다. 호버 상태에 따라 동작을 수행하는 컨트롤은 시각적 효과를 유발하는 것과는 달리 InvokePattern 컨트롤 패턴을 지원해야 합니다.

비고

이 구현은 마우스 관련 부작용의 결과로서만 컨트롤을 호출할 수 있는 경우 접근성 문제로 간주됩니다.

  • 컨트롤을 호출하는 것은 항목 선택과 다릅니다. 그러나 컨트롤에 따라 호출하면 항목이 부작용으로 선택될 수 있습니다. 예를 들어 내 문서 폴더에서 Microsoft Word 문서 목록 항목을 호출하면 항목이 선택되고 문서가 열립니다.

  • 요소가 호출되는 즉시 UI 자동화 트리에서 사라질 수 있습니다. 이벤트 콜백에서 제공하는 요소에서 정보를 요청하면 결과적으로 실패할 수 있습니다. 캐시된 정보를 미리 가져오는 것이 권장되는 해결 방법입니다.

  • 컨트롤은 여러 컨트롤 패턴을 구현할 수 있습니다. 예를 들어 Microsoft Excel 도구 모음의 채우기 색 컨트롤은 InvokePatternExpandCollapsePattern 컨트롤 패턴을 모두 구현합니다. ExpandCollapsePattern 는 메뉴를 노출하고 InvokePattern 선택한 색으로 활성 선택 영역을 채웁니다.

IInvokeProvider에 필요한 멤버

구현 IInvokeProvider하려면 다음 속성과 메서드가 필요합니다.

필수 멤버 멤버 형식 비고
Invoke 메서드 Invoke 는 비동기 호출이며 차단 없이 즉시 반환해야 합니다.

이 동작은 호출될 때 직접 또는 간접적으로 모달 대화 상자를 시작하는 컨트롤에 특히 중요합니다. 이벤트를 선동한 모든 UI 자동화 클라이언트는 모달 대화 상자가 닫히기 전까지 차단된 상태로 유지됩니다.

예외

공급자는 다음 예외를 반드시 throw해야 합니다.

예외 유형 조건
ElementNotEnabledException 컨트롤을 사용하도록 설정하지 않은 경우

참고하십시오