Freigeben über


Aktualisieren der Benutzeroberfläche

Nachdem Sie einen Befehl implementiert haben, können Sie Code hinzufügen, um die Benutzeroberfläche mit dem Status Ihrer neuen Befehle zu aktualisieren.

In einer typischen Win32-Anwendung kann der Befehlssatz kontinuierlich abgefragt werden, und der Status einzelner Befehle kann angepasst werden, wenn der Benutzer sie anzeigt. Da die Visual Studio-Shell jedoch eine unbegrenzte Anzahl von VSPackages hosten kann, kann die Reaktionsfähigkeit durch umfangreiche Abrufe verringert werden, insbesondere das Abrufen zwischen Interopassemblys zwischen verwaltetem Code und COM.

So aktualisieren Sie die Benutzeroberfläche

  1. Führen Sie einen der folgenden Schritte aus:

    • Rufen Sie die UpdateCommandUI-Methode auf.

      Eine IVsUIShell Schnittstelle kann wie folgt vom SVsUIShell Dienst abgerufen werden.

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

      Wenn der Parameter ungleich UpdateCommandUI Null (TRUE) ist, wird die Aktualisierung synchron und sofort ausgeführt. Es wird empfohlen, null (FALSE) für diesen Parameter zu übergeben, um eine gute Leistung Standard zu unterstützen. Wenn Sie das Zwischenspeichern vermeiden möchten, wenden Sie das DontCache Flag an, wenn Sie den Befehl in der VSCT-Datei erstellen. Trotzdem kann die Kennzeichnung vorsichtig oder die Leistung verringert werden. Weitere Informationen zu Befehlskennzeichnungen finden Sie in der Dokumentation zum Befehlskennzeichnungselement .

    • In VSPackages, die ein ActiveX-Steuerelement hosten, indem das direkte Aktivierungsmodell in einem Fenster verwendet wird, ist es möglicherweise praktischer, die UpdateUI Methode zu verwenden. Die UpdateCommandUI Methode in der IVsUIShell Schnittstelle und die UpdateUI Methode in der IOleInPlaceComponentUIManager Schnittstelle sind funktionell gleichwertig. Beide führen dazu, dass die Umgebung den Status aller Befehle erneut abfragt. In der Regel wird eine Aktualisierung nicht sofort ausgeführt. Stattdessen wird ein Update bis zur Leerlaufzeit verzögert. Die Shell speichert den Befehlsstatus zwischen, um eine gute Leistung Standard zu unterstützen. Wenn Sie das Zwischenspeichern vermeiden möchten, wenden Sie das DontCache Flag an, wenn Sie den Befehl in der VSCT-Datei erstellen. Verwenden Sie das Flag jedoch vorsichtig, da die Leistung möglicherweise verringert wird.

      Beachten Sie, dass Sie die IOleInPlaceComponentUIManager Schnittstelle abrufen können, indem Sie die QueryInterface Methode für ein IOleComponentUIManager Objekt aufrufen oder die Schnittstelle vom SOleComponentUIManager Dienst abrufen.