Bagikan melalui


Memperbarui Antarmuka Pengguna

Setelah menerapkan perintah, Anda dapat menambahkan kode untuk memperbarui antarmuka pengguna dengan status perintah baru Anda.

Dalam aplikasi Win32 yang khas, set perintah dapat terus dijajaki dan status perintah individual dapat disesuaikan saat pengguna melihatnya. Namun, karena shell Visual Studio dapat menghosting sejumlah VSPackages yang tidak terbatas, polling ekstensif dapat mengurangi responsivitas, terutama polling di seluruh rakitan interop antara kode terkelola dan COM.

Untuk memperbarui UI

  1. Lakukan salah satu langkah berikut:

    • Panggil UpdateCommandUI metode.

      Antarmuka IVsUIShell dapat diperoleh dari SVsUIShell layanan, sebagai berikut.

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

      Jika parameter UpdateCommandUI bukan nol (TRUE), pembaruan dilakukan secara sinkron dan segera. Kami menyarankan agar Anda meneruskan nol (FALSE) untuk parameter ini untuk membantu mempertahankan performa yang baik. Jika Anda ingin menghindari penembolokan, terapkan DontCache bendera saat Anda membuat perintah di file .vsct. Namun demikian, gunakan bendera dengan hati-hati atau performa mungkin menurun. Untuk informasi selengkapnya tentang bendera perintah, lihat dokumentasi Elemen Bendera Perintah.

    • Di VSPackages yang menghosting kontrol ActiveX dengan menggunakan model aktivasi di tempat di jendela, mungkin lebih nyaman untuk menggunakan metode .UpdateUI Metode UpdateCommandUI dalam IVsUIShell antarmuka dan UpdateUI metode dalam IOleInPlaceComponentUIManager antarmuka secara fungsional setara. Keduanya menyebabkan lingkungan mengkueri ulang status semua perintah. Biasanya, pembaruan tidak segera dilakukan. Sebagai gantinya, pembaruan tertunda hingga waktu diam. Shell menyimpan status perintah untuk membantu mempertahankan performa yang baik. Jika Anda ingin menghindari penembolokan, terapkan DontCache bendera saat Anda membuat perintah di file .vsct. Namun demikian, gunakan bendera dengan hati-hati karena performa mungkin menurun.

      Perhatikan bahwa Anda dapat memperoleh IOleInPlaceComponentUIManager antarmuka dengan memanggil QueryInterface metode pada IOleComponentUIManager objek atau dengan mendapatkan antarmuka dari SOleComponentUIManager layanan.