Kullanıcı Arabirimini Güncelleştirme

Bir komut uyguladıktan sonra, kullanıcı arabirimini yeni komutlarınızın durumuyla güncelleştirmek için kod ekleyebilirsiniz.

Tipik bir Win32 uygulamasında komut kümesi sürekli yoklanabilir ve kullanıcı bunları görüntüledikçe tek tek komutların durumu ayarlanabilir. Bununla birlikte, Visual Studio kabuğu sınırsız sayıda VSPackage barındırabildiğinden, kapsamlı yoklama, özellikle yönetilen kod ile COM arasındaki birlikte çalışma derlemeleri arasında yoklama olmak üzere yanıt hızını azaltabilir.

Kullanıcı arabirimini güncelleştirmek için

  1. Aşağıdaki adımlardan birini gerçekleştirin:

    • yöntemini çağırın UpdateCommandUI .

      Bir SVsUIShell arabirim IVsUIShell hizmetinden aşağıdaki gibi elde edilebilir.

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

      parametresi UpdateCommandUI sıfır değil ()TRUE ise, güncelleştirme zaman uyumlu ve hemen gerçekleştirilir. İyi bir performans sağlamaya yardımcı olması için bu parametre için sıfır (FALSE) geçirmenizi öneririz. Önbelleğe almayı önlemek istiyorsanız, .vsct dosyasında komutu oluştururken DontCache bayrağını uygulayın. Bununla birlikte, bayrağını dikkatli bir şekilde kullanın; aksi zaman performans düşebilir. Komut bayrakları hakkında daha fazla bilgi için Komut Bayrağı Öğesi belgelerine bakın.

    • Bir pencere içinde yerinde etkinleştirme modelini kullanarak bir ActiveX denetimini içeren VSPackage'larda, UpdateUI yöntemini kullanmak daha kullanışlı olabilir. UpdateCommandUI Arabirimindeki IVsUIShell yöntemi ve UpdateUI arabirimdeki IOleInPlaceComponentUIManager yöntemi işlevsel olarak eşdeğerdir. Her ikisi de ortamın tüm komutların durumunu yeniden sorgulamasına neden olur. Genellikle, bir güncelleştirme hemen gerçekleştirilmez. Bunun yerine, güncelleştirme boşta kalma süresine kadar geciktirilir. Kabuk, iyi performans sağlamaya yardımcı olmak için komut durumunu önbelleğe alır. Önbelleğe almayı önlemek istiyorsanız, .vsct dosyasında komutu oluştururken DontCache bayrağını uygulayın. Bununla birlikte, performans düşebileceğinden bayrağını dikkatli bir şekilde kullanın.

      Dikkat edin, IOleComponentUIManager nesnesinde QueryInterface yöntemini çağırarak veya SOleComponentUIManager hizmetinden arabirimi alarak IOleInPlaceComponentUIManager arabirimini edinebilirsiniz.