Bagikan melalui


Membuat jendela alat multi-instans

Anda dapat memprogram jendela alat sehingga beberapa instans dapat terbuka secara bersamaan. Secara default, jendela alat hanya dapat membuka satu instans.

Saat Anda menggunakan jendela alat multi-instans, Anda dapat menampilkan beberapa sumber informasi terkait secara bersamaan. Misalnya, Anda dapat menempatkan kontrol multibaris TextBox di jendela alat multi-instans sehingga beberapa cuplikan kode tersedia secara bersamaan selama sesi pemrograman. Selain itu, misalnya, Anda dapat menempatkan DataGrid kontrol dan kotak daftar drop-down di jendela alat multi-instans sehingga beberapa sumber data real-time dapat dilacak secara bersamaan.

Membuat jendela alat dasar (instans tunggal)

  1. Buat proyek bernama MultiInstanceToolWindow menggunakan templat VSIX, dan tambahkan templat item jendela alat kustom bernama MIToolWindow.

    Catatan

    Untuk informasi selengkapnya tentang membuat ekstensi dengan jendela alat, lihat Membuat ekstensi dengan jendela alat.

Membuat jendela alat multi-instans

  1. Buka file MIToolWindowPackage.cs dan temukan atribut .ProvideToolWindow dan parameter , seperti yang MultiInstances=true ditunjukkan dalam contoh berikut:

    [PackageRegistration(UseManagedResourcesOnly = true)]
        [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)] // Info on this package for Help/About
        [ProvideMenuResource("Menus.ctmenu", 1)]
        [ProvideToolWindow(typeof(MultiInstanceToolWindow.MIToolWindow), MultiInstances = true)]
        [Guid(MIToolWindowPackage.PackageGuidString)]
        public sealed class MIToolWindowPackage : Package
    {. . .}
    
  2. Dalam file MIToolWindowCommand.cs, temukan metode .ShowToolWindos() Dalam metode ini, panggil FindToolWindow metode dan atur benderanya create ke false sehingga akan melakukan iterasi melalui instans jendela alat yang ada hingga tersedia id ditemukan.

  3. Untuk membuat instans jendela alat, panggil FindToolWindow metode dan atur id ke nilai yang tersedia dan benderanya create ke true.

    Secara default, nilai id parameter FindToolWindow metode adalah 0. Nilai ini membuat jendela alat instans tunggal. Agar lebih dari satu instans dihosting, setiap instans harus memiliki keunikannya idsendiri.

  4. Show Panggil metode pada IVsWindowFrame objek yang dikembalikan oleh Frame properti instans jendela alat.

  5. Secara default, ShowToolWindow metode yang dibuat oleh templat item jendela alat membuat jendela alat instans tunggal. Contoh berikut menunjukkan cara mengubah ShowToolWindow metode untuk membuat beberapa instans.

    private void ShowToolWindow(object sender, EventArgs e)
    {
        for (int i = 0; i < 10; i++)
        {
            ToolWindowPane window = this.package.FindToolWindow(typeof(MIToolWindow), i, false);
            if (window == null)
            {
                // Create the window with the first free ID.
                window = (ToolWindowPane)this.package.FindToolWindow(typeof(MIToolWindow), i, true);
                if ((null == window) || (null == window.Frame))
                {
                    throw new NotSupportedException("Cannot create tool window");
                }
    
            IVsWindowFrame windowFrame = (IVsWindowFrame)window.Frame;
            Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(windowFrame.Show());
            break;
            }
        }
    }