Aktualizace uživatelského rozhraní

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í

  1. 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žijte DontCache příznak při vytváření příkazu v souboru .vsct. Příznak však může opatrně nebo výkon snížit. Další informace o příznakech příkazů naleznete v dokumentaci k elementu Command Flag.

    • V balíčku VSPackage, které hostují ovládací prvek technologie ActiveX pomocí místního aktivačního modelu v okně, může být vhodnější použít metoduUpdateUI. 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. Prostředí 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 DontCache příznak při vytváření příkazu v souboru .vsct. Příznak však používejte opatrně, protože výkon může snížit.

      Všimněte si, že rozhraní můžete získat IOleInPlaceComponentUIManager voláním QueryInterface metody na objektu IOleComponentUIManager nebo získáním rozhraní ze SOleComponentUIManager služby.