Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Po implementaci příkazu můžete přidat kód pro aktualizaci uživatelského rozhraní se stavem nových příkazů.
V typické aplikaci Win32 je možné sadu příkazů průběžně dotazovat a stav jednotlivých příkazů je možné upravit podle toho, jak je uživatel zobrazuje. Vzhledem k tomu, že prostředí sady Visual Studio může hostovat neomezený počet balíčků VSPackage, může rozsáhlé dotazování snížit rychlost odezvy, zejména dotazování napříč sestaveními spolupráce mezi spravovaným kódem a objektem COM.
Aktualizace uživatelského rozhraní
Proveďte jeden z následujících kroků:
Zavolejte metodu UpdateCommandUI .
Rozhraní IVsUIShell lze ze SVsUIShell služby získat následujícím způsobem.
void UpdateUI(Microsoft.VisualStudio.Shell.ServiceProvider sp) { IVsUIShell vsShell = (IVsUIShell)sp.GetService(typeof(IVsUIShell)); if (vsShell != null) { int hr = vsShell.UpdateCommandUI(0); Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(hr); } }Pokud je parametr UpdateCommandUI nenulové (
TRUE), provede se aktualizace synchronně a okamžitě. Doporučujeme, abyste pro tento parametr předali nulu (FALSE), aby se zachoval dobrý výkon. Pokud se chcete vyhnout ukládání do mezipaměti, použijteDontCachepříznak při vytváření příkazu v souboru .vsct. Nicméně, používejte příznak opatrně, jinak by se výkon mohl snížit. Další informace o příznacích příkazů naleznete v dokumentaci k elementu Command Flag.V balíčku VSPackage, které hostují ovládací prvek ActiveX pomocí místního aktivačního modelu v okně, může být vhodnější použít metodu UpdateUI . Metoda UpdateCommandUI v IVsUIShell rozhraní a UpdateUI metoda v IOleInPlaceComponentUIManager rozhraní jsou funkčně ekvivalentní. Obě způsobují, že se prostředí znovu dotazuje na stav všech příkazů. Aktualizace se obvykle neprovádí okamžitě. Místo toho se aktualizace zpozdí do doby nečinnosti. Shell ukládá stav příkazu do mezipaměti, aby se zachoval dobrý výkon. Pokud se chcete vyhnout ukládání do mezipaměti, použijte
DontCachepříznak při vytváření příkazu v souboru .vsct. Příznak však používejte opatrně, protože výkon se může snížit.Upozorňujeme, že rozhraní lze získat IOleInPlaceComponentUIManager voláním metody
QueryInterfacena objektu IOleComponentUIManager nebo přístupem k rozhraní ze služby SOleComponentUIManager.