Aktualizace uživatelského rozhraní

Po implementaci příkazu můžete přidat kód pro aktualizaci uživatelského rozhraní stavem nových příkazů.

V typické aplikaci Win32 lze sadu příkazů nepřetržitě dotazovat a stav jednotlivých příkazů lze upravit tak, jak je uživatel zobrazí. Vzhledem k tomu, že prostředí může hostovat neomezený počet rozšíření VSPackage, může rozsáhlé dotazování snížit rychlost odezvy, zejména cyklické dotazování napříč sestaveními vzájemné spolupráce mezi spravovaným kódem a Visual Studio com.

Aktualizace uživatelského rozhraní

  1. Proveďte jeden z následujících kroků:

    • Zavolejte UpdateCommandUI metodu .

      Rozhraní IVsUIShell lze získat ze služby následujícím SVsUIShell 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é ( ), provede se aktualizace TRUE synchronně a okamžitě. Pro tento parametr doporučujeme předat nulu ( ), aby FALSE se zachoval dobrý výkon. Pokud se chcete vyhnout ukládání do mezipaměti, při vytváření příkazu v souboru DontCache .vsct použijte příznak . Příznak ale používejte obezřetně nebo se může snížit výkon. Další informace o příznakech příkazů najdete v dokumentaci k elementu příznaku příkazu.

    • V balíčky VSPackage technologie ActiveX hostování ovládacího prvku pomocí modelu aktivace na místě v okně, může být pohodlnější použít UpdateUI metodu . Metoda UpdateCommandUI v rozhraní a metoda v rozhraní jsou IVsUIShell UpdateUI IOleInPlaceComponentUIManager funkčně ekvivalentní. Oba způsobí, že prostředí znovu dotazuje stav všech příkazů. Aktualizace se obvykle provádí okamžitě. Místo toho je aktualizace zpožděna až 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, při vytváření příkazu v souboru DontCache .vsct použijte příznak . Příznak ale používejte opatrně, protože se může snížit výkon.

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

Viz také