如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件。
執行命令後,您可以加入程式碼以更新使用者介面與您的新命令的狀態。
典型的 Win32 應用程式中的命令集可用於連續輪詢,使用者可以檢視它們時,您可以調整個別命令的狀態。 不過,因為Visual Studio殼層可以裝載無限的數量的 Vspackage,廣泛輪詢可能會降低回應性,特別輪詢多個 managed 程式碼與 COM interop 組件
若要更新 UI
請執行下列其中一個步驟:
呼叫UpdateCommandUI方法。
IVsUIShell介面可以取自SVsUIShell服務,如下所示。
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); } }
如果參數UpdateCommandUI為非零 (
TRUE
),然後執行更新,以同步方式以及立即。 我們建議您傳遞零 (FALSE
) 這個參數可協助您維護良好的效能。 如果您想要避免快取,套用DontCache
旗標,當您建立.vsct 檔案中的命令。 不過,請小心使用此旗標,或可能會降低效能。 如需命令旗標的詳細資訊,請參閱命令旗標的項目文件。在使用就地啟動模型,在視窗中裝載 ActiveX 控制項的 Vspackage,可能會更方便使用UpdateUI方法。 UpdateCommandUI方法中的IVsUIShell介面和UpdateUI方法中的IOleInPlaceComponentUIManager介面的功能相同。 兩者會造成重新查詢所有命令的狀態的環境。 一般而言,更新是不會立即執行。 相反地,更新會延遲到閒置時。 殼層會快取命令狀態可協助您維護良好的效能。 如果您想要避免快取,套用
DontCache
旗標,當您建立.vsct 檔案中的命令。 不過,在因為可能會降低效能,請小心使用此旗標。請注意,您可以取得IOleInPlaceComponentUIManager介面呼叫
QueryInterface
方法IOleComponentUIManager物件,或藉由取得從介面SOleComponentUIManager服務。