Bagikan melalui


Membuat halaman opsi

Dalam kerangka kerja paket terkelola Visual Studio, kelas yang berasal dari DialogPage memperluas Visual Studio IDE dengan menambahkan halaman Opsi di bawah menu Alat .

Objek yang mengimplementasikan halaman Opsi Alat tertentu dikaitkan dengan VSPackages tertentu oleh ProvideOptionPageAttribute objek .

Karena lingkungan membuat instans objek yang mengimplementasikan halaman Opsi Alat tertentu ketika halaman tertentu ditampilkan oleh IDE:

  • Halaman Opsi Alat harus diimplementasikan pada objeknya sendiri, dan bukan pada objek yang mengimplementasikan VSPackage.

  • Objek tidak dapat menerapkan beberapa halaman Opsi Alat.

Mendaftar sebagai penyedia halaman Opsi Alat

VSPackage yang mendukung konfigurasi pengguna melalui halaman Opsi Alat menunjukkan objek yang menyediakan halaman Opsi Alat ini dengan menerapkan instans ProvideOptionPageAttribute yang diterapkan ke Package implementasi.

Harus ada satu instans ProvideOptionPageAttribute untuk setiap DialogPagejenis turunan yang mengimplementasikan halaman Opsi Alat.

Setiap instans ProvideOptionPageAttribute menggunakan jenis yang mengimplementasikan halaman Opsi Alat, string yang berisi kategori dan subkategori yang digunakan untuk mengidentifikasi halaman Opsi Alat, dan informasi sumber daya untuk mendaftarkan jenis sebagai menyediakan halaman Opsi Alat.

Status halaman Opsi Alat Pertahankan

Jika implementasi halaman Opsi Alat terdaftar dengan dukungan otomatisasi diaktifkan, IDE akan mempertahankan status halaman bersama dengan semua halaman Opsi Alat lainnya.

VSPackage dapat mengelola persistensinya sendiri dengan menggunakan ProvideProfileAttribute. Hanya satu atau metode persistensi lainnya yang harus digunakan.

Menerapkan kelas DialogPage

Objek yang menyediakan implementasi VSPackage dari DialogPagejenis -turunan dapat memanfaatkan fitur yang diwariskan berikut:

  • Jendela antarmuka pengguna default.

  • Mekanisme persistensi default yang tersedia baik jika ProvideProfileAttribute diterapkan ke kelas , atau jika SupportsProfiles properti diatur ke true untuk ProvideOptionPageAttribute yang diterapkan ke kelas .

  • Dukungan automasi.

    Persyaratan minimum untuk objek yang mengimplementasikan halaman Opsi Alat menggunakan DialogPage adalah penambahan properti publik.

    Jika kelas terdaftar dengan benar sebagai penyedia halaman Opsi Alat, maka properti publiknya tersedia di bagian Opsi dari menu Alat dalam bentuk kisi properti.

    Semua fitur default ini dapat ditimpa. Misalnya, untuk membuat antarmuka pengguna yang lebih canggih hanya perlu mengambil alih implementasi Windowdefault .

Contoh

Berikut ini adalah implementasi "Halo dunia" sederhana dari halaman opsi. Menambahkan kode berikut ke proyek default yang dibuat oleh templat paket Visual Studio dengan opsi Perintah Menu yang dipilih akan menunjukkan fungsionalitas halaman opsi secara memadai.

Deskripsi

Kelas berikut mendefinisikan halaman opsi "Halo dunia" minimal. Saat dibuka, pengguna dapat mengatur properti publik HelloWorld di kisi properti.

Kode

using System;
using Microsoft.VisualStudio.Shell;

namespace Company.UIUserSettingsToolsOptionsPages
{
    class HelloWorldOptions : DialogPage
    {
        bool helloWorld = true;
        public bool HelloWorld
        {
            get { return helloWorld; }
            set { helloWorld = value; }
        }
    }
}
Imports System
Imports Microsoft.VisualStudio.Shell

Namespace Company.UIUserSettingsToolsOptionsPages
    Class HelloWorldOptions
        Inherits DialogPage
        Private m_helloWorld As Boolean = True
        Public Property HelloWorld() As Boolean
            Get
                Return m_helloWorld
            End Get
            Set(ByVal value As Boolean)
                m_helloWorld = value
            End Set
        End Property
    End Class
End Namespace

Deskripsi

Menerapkan atribut berikut ke kelas paket membuat halaman opsi tersedia saat paket dimuat. Angka-angka tersebut adalah ID sumber daya arbitrer untuk kategori dan halaman, dan nilai Boolean di akhir menentukan apakah halaman mendukung otomatisasi.

Kode

[ProvideOptionPage(typeof(HelloWorldOptions), 
    "Hello World Category", "Hello World Page", 
    1000, 1001, false)]
<PackageRegistration(UseManagedResourcesOnly:=True)> _
<DefaultRegistryRoot("Software\Microsoft\VisualStudio\9.0")> _
<InstalledProductRegistration(False, "#110", "#112", "1.0", IconResourceID:=400)> _
<ProvideLoadKey("Standard", "1.0", "Package Name", "Company", 1)> _
<ProvideMenuResource(1000, 1)> _
<Guid(GuidList.guidPkgString)> _
<ProvideOptionPage(GetType(HelloWorldOptions), "Hello World Category", "Hello World Page", 1000, 1001, False)> _
Public NotInheritable Class UIUserSettingsToolsOptionsPagesPackage
    Inherits Package

Deskripsi

Penanganan aktivitas berikut menampilkan hasil tergantung pada nilai properti yang diatur di halaman opsi. Ini menggunakan GetDialogPage metode dengan hasil yang secara eksplisit ditransmisikan ke dalam jenis halaman opsi kustom untuk mengakses properti yang diekspos oleh halaman.

Dalam kasus proyek yang dihasilkan oleh templat paket, panggil fungsi ini dari MenuItemCallback fungsi untuk melampirkannya ke perintah default yang ditambahkan ke menu Alat .

Kode

private void ShowHelloWorld(object sender, EventArgs e)
{
    var hw = GetDialogPage(typeof(HelloWorldOptions)) 
        as HelloWorldOptions;
    if (hw.HelloWorld == true)
    {
        MessageBox.Show("Hello World!");
    }
    else MessageBox.Show("Goodbye.");
}
Private Sub ShowHelloWorld(ByVal sender As Object, ByVal e As EventArgs)
    Dim hw = TryCast(GetDialogPage(GetType(HelloWorldOptions)), HelloWorldOptions)
    If hw.HelloWorld = True Then
        MessageBox.Show("Hello World!")
    Else
        MessageBox.Show("Goodbye.")
    End If
End Sub