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
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".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 menjadiMyToolsOptionsPackage.cs
. Untuk informasi selengkapnya tentang cara membuat VSPackage, lihat Membuat ekstensi dengan VSPackage.
Untuk membuat kisi properti Opsi Alat
Buka file MyToolsOptionsPackage di editor kode.
Tambahkan pernyataan penggunaan berikut.
using System.ComponentModel;
Deklarasikan
OptionPageGrid
kelas dan dapatkan dari DialogPage.public class OptionPageGrid : DialogPage { }
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
OptionInteger
Tambahkan properti keOptionPageGrid
kelas .System.ComponentModel.CategoryAttribute Terapkan untuk menetapkan ke properti kategori kisi properti.
System.ComponentModel.DisplayNameAttribute Terapkan untuk menetapkan ke properti nama.
System.ComponentModel.DescriptionAttribute Terapkan untuk menetapkan ke properti deskripsi.
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.
Bangun proyek dan mulai penelusuran kesalahan.
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.
Buka file MyToolsOptionsPackage di editor kode.
Tambahkan pernyataan penggunaan berikut.
using System.Windows.Forms;
OptionPageCustom
Tambahkan kelas, tepat sebelumOptionPageGrid
kelas. Dapatkan kelas baru dariDialogPage
.public class OptionPageCustom : DialogPage { private string optionValue = "alpha"; public string OptionString { get { return optionValue; } set { optionValue = value; } } }
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; } } }
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
Tambahkan Kontrol Pengguna baru bernama MyUserControl ke proyek.
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 .
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 indukOptionPageCustom
. MetodeInitialize
ditampilkanOptionString
di Kotak Teks. Penanganan aktivitas menulis nilai Kotak Teks saat ini keOptionString
saat fokus meninggalkan Kotak Teks.Dalam file kode paket, tambahkan penimpaan
OptionPageCustom.Window
properti keOptionPageCustom
kelas untuk membuat, menginisialisasi, dan mengembalikan instansMyUserControl
. 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; } } }
Buat dan jalankan proyek.
Dalam instans eksperimental, klik Opsi Alat>.
Temukan Kategori Saya lalu Halaman Kustom Saya.
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.
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.OptionPageGrid
LoadSettingsFromStorage panggilan untuk memuat opsinya, yang merupakan properti publik.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.
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)); }
Bangun proyek dan mulai penelusuran kesalahan.
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
Pertama tambahkan file bernama OpenPageCommand.cs.
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); }
Jalankan proyek, lalu klik tombol Panggil (berada di bawah opsi Alat secara default), lalu Anda dapat melihat halaman opsi Anda dibuka.
Detail selengkapnya tentang membuka halaman opsi bisa merujuk ke dokumen berikut