Udostępnij za pośrednictwem


Aktualizowanie interfejsu użytkownika

Po zaimplementowaniu polecenia można dodać kod w celu zaktualizowania interfejsu użytkownika przy użyciu stanu nowych poleceń.

W typowej aplikacji Win32 zestaw poleceń można stale sondować, a stan poszczególnych poleceń można dostosować w miarę ich wyświetlenia przez użytkownika. Jednak ze względu na to, że powłoka programu Visual Studio może hostować nieograniczoną liczbę pakietów VSPackage, obszerne sondowanie może zmniejszyć czas odpowiedzi, zwłaszcza sondowanie między zestawami między kodem zarządzanym a com.

Aby zaktualizować interfejs użytkownika

  1. Wykonaj jedną z następujących czynności:

    • Wywołaj metodę UpdateCommandUI .

      Interfejs IVsUIShell można uzyskać z SVsUIShell usługi w następujący sposób.

      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);
          }
      }
      
      

      Jeśli parametr parametru UpdateCommandUI jest inny niż zero (TRUE), aktualizacja jest wykonywana synchronicznie i natychmiast. Zalecamy przekazanie zera () dla tego parametru,FALSE aby ułatwić utrzymanie dobrej wydajności. Jeśli chcesz uniknąć buforowania, zastosuj flagę DontCache podczas tworzenia polecenia w pliku vsct. Niemniej jednak ostrożnie użyj flagi lub wydajność może się zmniejszyć. Aby uzyskać więcej informacji na temat flag poleceń, zobacz dokumentację Elementu flagi polecenia.

    • W pakietach VSPackage hostujących kontrolkę ActiveX przy użyciu modelu aktywacji w miejscu w oknie może być wygodniejsze użycie UpdateUI metody . UpdateCommandUI Metoda w interfejsie IVsUIShell i UpdateUI metodzie IOleInPlaceComponentUIManager w interfejsie są funkcjonalnie równoważne. Obie powodują ponowne wykonywanie zapytań dotyczących stanu wszystkich poleceń w środowisku. Zazwyczaj aktualizacja nie jest wykonywana natychmiast. Zamiast tego aktualizacja jest opóźniona do czasu bezczynności. Powłoka buforuje stan polecenia, aby zapewnić dobrą wydajność. Jeśli chcesz uniknąć buforowania, zastosuj flagę DontCache podczas tworzenia polecenia w pliku vsct. Niemniej jednak należy ostrożnie używać flagi, ponieważ wydajność może się zmniejszyć.

      Zwróć uwagę, że interfejs można uzyskać IOleInPlaceComponentUIManager , wywołując QueryInterface metodę IOleComponentUIManager w obiekcie lub uzyskując interfejs z SOleComponentUIManager usługi.