Implementera UI Automation Invoke Control Pattern
Kommentar
Den här dokumentationen System.Windows.Automation är avsedd för .NET Framework-utvecklare som vill använda de hanterade UI Automation-klasserna som definierats i namnområdet. Den senaste informationen om UI Automation finns i Windows Automation API: UI Automation.
Det här avsnittet innehåller riktlinjer och konventioner för att implementera IInvokeProvider, inklusive information om händelser och egenskaper. Länkar till ytterligare referenser visas i slutet av ämnet.
Kontrollmönstret InvokePattern används för att stödja kontroller som inte underhåller tillstånd när de aktiveras, utan snarare initierar eller utför en enda, entydig åtgärd. Kontroller som upprätthåller tillstånd, till exempel kryssrutor och alternativknappar, måste i stället implementera IToggleProviderISelectionItemProvider respektive. Exempel på kontroller som implementerar mönstret Anropa kontroll finns i Kontrollmönstermappning för UI Automation-klienter.
Riktlinjer och konventioner för implementering
När du implementerar mönstret Anropa kontroll bör du tänka på följande riktlinjer och konventioner:
Kontroller implementeras IInvokeProvider om samma beteende inte exponeras via en annan kontrollmönsterprovider. Om Invoke metoden på en kontroll till exempel utför samma åtgärd som ExpandCollapse eller-metoden ska kontrollen inte implementera IInvokeProvider.
Att anropa en kontroll utförs vanligtvis genom att klicka eller dubbelklicka eller trycka på RETUR, ett fördefinierat kortkommando eller någon alternativ kombination av tangenttryckningar.
InvokedEvent aktiveras på en kontroll som har aktiverats (som ett svar på en kontroll som utför dess associerade åtgärd). Om möjligt bör händelsen aktiveras när kontrollen har slutfört åtgärden och returnerats utan blockering. Den anropade händelsen bör aktiveras innan begäran anropas i följande scenarier:
Det är inte möjligt eller praktiskt att vänta tills åtgärden är klar.
Åtgärden kräver användarinteraktion.
Åtgärden är tidskrävande och gör att den anropande klienten blockeras under en betydande tid.
Om anrop av kontrollen har betydande biverkningar, bör dessa biverkningar exponeras via egenskapen HelpText . Även om Invoke det till exempel inte är associerat med markeringen Invoke kan det leda till att en annan kontroll väljs.
Hovringseffekter (eller musöver) utgör vanligtvis inte en anropad händelse. Kontroller som utför en åtgärd (i stället för att orsaka en visuell effekt) baserat på hovringstillståndet bör dock ha stöd för InvokePattern kontrollmönstret.
Kommentar
Den här implementeringen anses vara ett hjälpmedelsproblem om kontrollen endast kan anropas som ett resultat av en musrelaterad biverkning.
Att anropa en kontroll skiljer sig från att välja ett objekt. Beroende på kontrollen kan det dock leda till att objektet väljs som en bieffekt om det anropas. Om du till exempel anropar ett Microsoft Word-dokumentlistobjekt i mappen Mina dokument markeras både objektet och dokumentet öppnas.
Ett element kan försvinna från UI Automation-trädet omedelbart när det anropas. Att begära information från elementet som tillhandahålls av händelseåteranropet kan misslyckas till följd av detta. Förhämtning av cachelagrad information är den rekommenderade lösningen.
Kontroller kan implementera flera kontrollmönster. Kontrollen Fyllningsfärg i Microsoft Excel-verktygsfältet implementerar till exempel både kontrollmönstren InvokePatternExpandCollapsePattern och . ExpandCollapsePattern visar menyn och fyller den InvokePattern aktiva markeringen med den valda färgen.
Obligatoriska medlemmar för IInvokeProvider
Följande egenskaper och metoder krävs för att implementera IInvokeProvider.
Obligatoriska medlemmar | Medlemstyp | Kommentar |
---|---|---|
Invoke | metod | Invoke är ett asynkront anrop och måste returneras omedelbart utan blockering. Det här beteendet är särskilt viktigt för kontroller som direkt eller indirekt startar en modal dialogruta när den anropas. Alla UI Automation-klienter som initierade händelsen kommer att förbli blockerade tills den modala dialogrutan har stängts. |
Undantag
Leverantörer måste utlösa följande undantag.
Undantagstyp | Villkor |
---|---|
ElementNotEnabledException | Om kontrollen inte är aktiverad. |