Gewusst wie: Aktualisieren Sie die Benutzeroberfläche
Nachdem Sie ein Befehl Behandlung Schema in einem VSPackage implementieren, können Sie Code hinzu, um die Benutzeroberfläche mit dem Status der neuen Befehle zu aktualisieren.
In einer typischen Win32-Anwendung kann der Befehl von kontinuierlich abgestimmt werden können und der Zustand der einzelnen Befehle kann als die Benutzer Ansichten angepasst werden. Da die Visual Studio Shell Host eine unbegrenzte Anzahl von VSPackages verringerte, kann möglicherweise umfangreicher Abruf die Reaktionsgeschwindigkeit und insbesondere stimmte über Interop-Assemblys zwischen verwaltetem Code und COM ab.
So aktualisieren Sie die Benutzeroberfläche
Führen Sie einen der folgenden Schritte aus:
Rufen Sie die UpdateCommandUI-Methode auf.
Eine IVsUIShell-Schnittstelle kann vom SVsUIShell Dienst abgerufen werden, wie folgt aus.
Private Sub UpdateUI(ByVal sp As Microsoft.VisualStudio.Shell.ServiceProvider) Dim vsShell As IVsUIShell = DirectCast(sp.GetService(GetType(IVsUIShell)), IVsUIShell) If vsShell IsNot Nothing Then Dim hr As Integer = vsShell.UpdateCommandUI(0) Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(hr) End If End Sub
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); } }
void UpdateUI(IServiceProvider *pSP) { CComPtr< IVsUIShell> srpShell; int hresult = pSP->QueryService(SID_SVsUIShell, IID_IVsUIShell, (void **)&srpShell); if (SUCCEEDED(hresult) && NULL != srpShell) { sprShell->UpdateCommandUI(FALSE); } }
Wenn der Parameter UpdateCommandUI (TRUE) ungleich 0 (null) ist, wird die Aktualisierung synchron und sofort ausgeführt. Es wird empfohlen, führenFALSE(null), sodass dieser Parameter können Sie eine gute Leistung aufrechtzuerhalten. Wenn Sie zwischenspeichern vermeiden möchten, wenden Sie das DontCache-Flag, wenn Sie den Befehl in der .vsct-Datei erstellen. Trotzdem können Sie das Flag kann die Leistung geboten, oder verringerte. Weitere Informationen über Befehls Flags finden Sie in der Dokumentation Command Flag-Element .
In VSPackages dem Hosten eines ActiveX-Steuerelements, indem das Modell der Symbolleiste Aktivierung in einem Fenster es möglicherweise einfacher, kann die UpdateUI-Methode zu verwenden. Die UpdateCommandUI-Methode in der IVsUIShell-Schnittstelle und die UpdateUI-Methode in der IOleInPlaceComponentUIManager-Schnittstelle sind funktional äquivalent. Beide bewirken, dass die Umgebung den Zustand aller Befehle erneut abfragen. In der Regel wird ein Update nicht sofort ausgeführt. Stattdessen wird ein Update auf Leerlaufzeit verzögert. Die Shell speichert den Befehl Zustand, um eine gute Leistung aufrechtzuerhalten. Wenn Sie zwischenspeichern vermeiden möchten, wenden Sie das DontCache-Flag, wenn Sie den Befehl in der .vsct-Datei erstellen. Trotzdem können Sie das Flag geboten, da die Leistung möglicherweise verringerte.
Beachten Sie, dass Sie die IOleInPlaceComponentUIManager-Schnittstelle abrufen können, indem Sie die QueryInterface-Methode für ein IOleComponentUIManager-Objekt aufrufen oder indem Sie die Schnittstelle vom SOleComponentUIManager Dienst abgerufen.
Siehe auch
Konzepte
Wie VSPackages Benutzeroberflächenelemente Hinzufügen der IDE