Bagikan melalui


Membuat halaman opsi

Panduan ini membuat halaman Alat/Opsi sederhana yang menggunakan kisi properti untuk memeriksa dan mengatur properti.

Untuk menyimpan properti ini ke dan memulihkannya dari file pengaturan, ikuti langkah-langkah ini, lalu lihat Membuat kategori pengaturan.

MPF menyediakan dua kelas untuk membantu Anda membuat halaman Opsi Alat, kelas, Package dan DialogPage kelas. Anda membuat VSPackage untuk menyediakan kontainer untuk halaman ini dengan subkelas Package kelas. Anda membuat setiap halaman opsi alat dengan turunan dari DialogPage kelas.

Membuat halaman kisi Opsi Alat

Di bagian ini, Anda membuat kisi properti Opsi Alat sederhana. Anda menggunakan kisi ini untuk menampilkan dan mengubah nilai properti.

Untuk membuat proyek VSIX dan menambahkan VSPackage

  1. Setiap ekstensi Visual Studio dimulai dengan proyek penyebaran VSIX, yang akan berisi aset ekstensi. Buat proyek Visual Studio VSIX bernama MyToolsOptionsExtension. Anda dapat menemukan templat proyek VSIX dalam dialog Proyek Baru dengan mencari "vsix".

  2. Tambahkan VSPackage dengan menambahkan templat item Paket Visual Studio bernama MyToolsOptionsPackage. Di Penjelajah Solusi, klik kanan simpul proyek dan pilih Tambahkan>Item Baru. Dalam dialog Tambahkan Item Baru, buka Ekstensibilitas Item>Visual C# dan pilih Paket Visual Studio. Di bidang Nama di bagian bawah dialog, ubah nama file menjadi MyToolsOptionsPackage.cs. Untuk informasi selengkapnya tentang cara membuat VSPackage, lihat Membuat ekstensi dengan VSPackage.

Untuk membuat kisi properti Opsi Alat

  1. Buka file MyToolsOptionsPackage di editor kode.

  2. Tambahkan pernyataan penggunaan berikut.

    using System.ComponentModel;
    
  3. Deklarasikan OptionPageGrid kelas dan dapatkan dari DialogPage.

    public class OptionPageGrid : DialogPage
    {  }
    
  4. ProvideOptionPageAttribute Terapkan ke VSPackage kelas untuk ditetapkan ke kelas kategori opsi dan nama halaman opsi untuk OptionPageGrid. Hasilnya akan terlihat seperti ini:

    [PackageRegistration(UseManagedResourcesOnly = true)]
    [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)]
    [ProvideMenuResource("Menus.ctmenu", 1)]
    [Guid(GuidList.guidMyToolsOptionsPkgString)]
    [ProvideOptionPage(typeof(OptionPageGrid),
        "My Category", "My Grid Page", 0, 0, true)]
    public sealed class MyToolsOptionsPackage : Package
    
  5. OptionInteger Tambahkan properti ke OptionPageGrid kelas .

    public class OptionPageGrid : DialogPage
    {
        private int optionInt = 256;
    
        [Category("My Category")]
        [DisplayName("My Integer Option")]
        [Description("My integer option")]
        public int OptionInteger
        {
            get { return optionInt; }
            set { optionInt = value; }
        }
    }
    

    Catatan

    Implementasi DialogPage default mendukung properti yang memiliki pengonversi yang sesuai atau yang merupakan struktur atau array yang dapat diperluas ke properti yang memiliki pengonversi yang sesuai. Untuk daftar pengonversi, lihat System.ComponentModel namespace.

  6. Bangun proyek dan mulai penelusuran kesalahan.

  7. Dalam instans eksperimental Visual Studio, pada menu Alat klik Opsi.

    Di panel kiri, Anda akan melihat Kategori Saya. (Kategori opsi tercantum dalam urutan alfabet, sehingga akan muncul sekitar setengah daftar.) Buka Kategori Saya lalu klik Halaman Kisi Saya. Kisi opsi muncul di panel kanan. Kategori properti adalah Opsi Saya, dan nama propertinya adalah Opsi Bilangan Bulat Saya. Deskripsi properti, Opsi bilangan bulat saya, muncul di bagian bawah panel. Ubah nilai dari nilai awal 256 menjadi sesuatu yang lain. Klik OK, lalu buka kembali Halaman Kisi Saya. Anda dapat melihat bahwa nilai baru tetap ada.

    Halaman opsi Anda juga tersedia melalui kotak pencarian Visual Studio. Dalam kotak pencarian di dekat bagian atas IDE, ketik Kategori Saya dan Anda akan melihat Kategori Saya -> Halaman Kisi Saya tercantum dalam hasil.

Membuat halaman kustom Opsi Alat

Di bagian ini, Anda membuat halaman Opsi Alat dengan UI kustom. Anda menggunakan halaman ini untuk menampilkan dan mengubah nilai properti.

  1. Buka file MyToolsOptionsPackage di editor kode.

  2. Tambahkan pernyataan penggunaan berikut.

    using System.Windows.Forms;
    
  3. OptionPageCustom Tambahkan kelas, tepat sebelum OptionPageGrid kelas. Dapatkan kelas baru dari DialogPage.

    public class OptionPageCustom : DialogPage
    {
        private string optionValue = "alpha";
    
        public string OptionString
        {
            get { return optionValue; }
            set { optionValue = value; }
        }
    }
    
  4. Tambahkan atribut GUID. Tambahkan properti OptionString:

    [Guid("00000000-0000-0000-0000-000000000000")]
    public class OptionPageCustom : DialogPage
    {
        private string optionValue = "alpha";
    
        public string OptionString
        {
            get { return optionValue; }
            set { optionValue = value; }
        }
    }
    
  5. Terapkan detik ProvideOptionPageAttribute ke kelas VSPackage. Atribut ini menetapkan kelas kategori opsi dan nama halaman opsi.

    [PackageRegistration(UseManagedResourcesOnly = true)]
    [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)]
    [ProvideMenuResource("Menus.ctmenu", 1)]
    [Guid(GuidList.guidMyToolsOptionsPkgString)]
    [ProvideOptionPage(typeof(OptionPageGrid),
        "My Category", "My Grid Page", 0, 0, true)]
    [ProvideOptionPage(typeof(OptionPageCustom),
        "My Category", "My Custom Page", 0, 0, true)]
    public sealed class MyToolsOptionsPackage : Package
    
  6. Tambahkan Kontrol Pengguna baru bernama MyUserControl ke proyek.

  7. Tambahkan kontrol TextBox ke kontrol pengguna.

    Di jendela Properti , pada toolbar, klik tombol Peristiwa , lalu klik dua kali peristiwa Tinggalkan . Penanganan aktivitas baru muncul di kode MyUserControl.cs .

  8. Tambahkan bidang publik OptionsPage , Initialize metode ke kelas kontrol, dan perbarui penanganan aktivitas untuk mengatur nilai opsi ke konten kotak teks:

    public partial class MyUserControl : UserControl
    {
        public MyUserControl()
        {
            InitializeComponent();
        }
    
        internal OptionPageCustom optionsPage;
    
        public void Initialize()
        {
            textBox1.Text = optionsPage.OptionString;
        }
    
        private void textBox1_Leave(object sender, EventArgs e)
        {
            optionsPage.OptionString = textBox1.Text;
        }
    }
    

    Bidang optionsPage menyimpan referensi ke instans induk OptionPageCustom . Metode Initialize ditampilkan OptionString di Kotak Teks. Penanganan aktivitas menulis nilai Kotak Teks saat ini ke OptionString saat fokus meninggalkan Kotak Teks.

  9. Dalam file kode paket, tambahkan penimpaan OptionPageCustom.Window properti ke OptionPageCustom kelas untuk membuat, menginisialisasi, dan mengembalikan instans MyUserControl. Kelas sekarang akan terlihat seperti ini:

    [Guid("00000000-0000-0000-0000-000000000000")]
    public class OptionPageCustom : DialogPage
    {
        private string optionValue = "alpha";
    
        public string OptionString
        {
            get { return optionValue; }
            set { optionValue = value; }
        }
    
        protected override IWin32Window Window
        {
            get
            {
                MyUserControl page = new MyUserControl();
                page.optionsPage = this;
                page.Initialize();
                return page;
            }
        }
    }
    
  10. Buat dan jalankan proyek.

  11. Dalam instans eksperimental, klik Opsi Alat>.

  12. Temukan Kategori Saya lalu Halaman Kustom Saya.

  13. Ubah nilai OptionString. Klik OK, lalu buka kembali Halaman Kustom Saya. Anda dapat melihat bahwa nilai baru telah bertahan.

Opsi Akses

Di bagian ini, Anda mendapatkan nilai opsi dari VSPackage yang menghosting halaman Opsi Alat terkait. Teknik yang sama dapat digunakan untuk mendapatkan nilai properti publik apa pun.

  1. Dalam file kode paket, tambahkan properti publik yang disebut OptionInteger ke kelas MyToolsOptionsPackage .

    public int OptionInteger
    {
        get
        {
            OptionPageGrid page = (OptionPageGrid)GetDialogPage(typeof(OptionPageGrid));
            return page.OptionInteger;
        }
    }
    
    

    Kode ini memanggil untuk membuat atau mengambil OptionPageGrid instansGetDialogPage. OptionPageGridLoadSettingsFromStorage panggilan untuk memuat opsinya, yang merupakan properti publik.

  2. Sekarang tambahkan templat item perintah kustom bernama MyToolsOptionsCommand untuk menampilkan nilai. Dalam dialog Tambahkan Item Baru, buka Visual C#>Ekstensibilitas dan pilih Perintah Kustom. Di bidang Nama di bagian bawah jendela, ubah nama file perintah menjadi MyToolsOptionsCommand.cs.

  3. Dalam file MyToolsOptionsCommand, ganti isi metode perintah ShowMessageBox dengan yang berikut ini:

    private void ShowMessageBox(object sender, EventArgs e)
    {
        MyToolsOptionsPackage myToolsOptionsPackage = this.package as MyToolsOptionsPackage;
        System.Windows.Forms.MessageBox.Show(string.Format(CultureInfo.CurrentCulture, "OptionInteger: {0}", myToolsOptionsPackage.OptionInteger));
    }
    
    
  4. Bangun proyek dan mulai penelusuran kesalahan.

  5. Dalam instans eksperimental, pada menu Alat, klik Panggil MyToolsOptionsCommand.

    Kotak pesan menampilkan nilai saat ini dari OptionInteger.

Buka halaman opsi

Di bagian ini, Anda akan menambahkan Perintah dan peristiwa untuk tombol untuk membuka halaman opsi

  1. Pertama tambahkan file bernama OpenPageCommand.cs.

  2. Kemudian, buka OpenPageCommand.cs dan ubah metode Execute Anda.

    private void Execute(object sender, EventArgs e)
    {
        ThreadHelper.ThrowIfNotOnUIThread();
        Type optionsPageType = typeof(OptionPageCustom);
        Instance.package.ShowOptionPage(optionsPageType);
    }
    
  3. Jalankan proyek, lalu klik tombol Panggil (berada di bawah opsi Alat secara default), lalu Anda dapat melihat halaman opsi Anda dibuka.

  4. Detail selengkapnya tentang membuka halaman opsi bisa merujuk ke dokumen berikut