Pemrograman Kelas untuk Membuat Kontrol VB.NET Kustom

click fraud protection

Membangun komponen khusus yang lengkap dapat menjadi proyek yang sangat canggih. Tetapi Anda dapat membangun kelas VB.NET yang memiliki banyak keunggulan komponen toolbox dengan upaya yang jauh lebih sedikit. Begini caranya!

Untuk mengetahui apa yang perlu Anda lakukan untuk membuat komponen khusus yang lengkap, coba percobaan ini:

-> Buka proyek Aplikasi Windows baru di VB.NET.
-> Tambahkan kotak centang dari Toolbox ke formulir.
-> Klik tombol "Tampilkan Semua File" di bagian atas Penjelajah solusi.

Ini akan menampilkan file yang dibuat oleh Visual Studio untuk proyek Anda (jadi Anda tidak perlu melakukannya). Sebagai catatan kaki sejarah, kompiler VB6 melakukan banyak hal yang sama, tetapi Anda tidak pernah dapat mengakses kode karena dikubur dalam "kode-p" yang dikompilasi. Anda dapat mengembangkan kontrol khusus di VB6 juga, tetapi itu jauh lebih sulit dan memerlukan utilitas khusus yang disediakan Microsoft hanya untuk tujuan itu.

Dalam Formulir Designer.vb file, Anda akan menemukan bahwa kode di bawah ini telah ditambahkan secara otomatis di lokasi yang tepat untuk mendukung komponen Kotak Centang. (Jika Anda memiliki versi Visual Studio yang berbeda, kode Anda mungkin sedikit berbeda.) Ini adalah kode yang ditulis Visual Studio untuk Anda.

instagram viewer

'Diperlukan oleh komponen Windows Form Designer Private _ As System. ComponentModel. IContainer'CATAT: Prosedur berikut diperlukan 'oleh Windows Form Designer'Ini dapat dimodifikasi menggunakan Windows Form Designer.'Jangan memodifikasinya menggunakan editor kode. _Private Sub InitializeComponent () Saya. CheckBox1 = Sistem Baru. Windows. Formulir. Kotak Centang () Saya. SuspendLayout () '' CheckBox1 'Me. CheckBox1.AutoSize = True Me. CheckBox1.Location = Sistem Baru. Gambar. Poin (29, 28) Saya. CheckBox1.Name = "CheckBox1".. . Dan seterusnya ...

Ini adalah kode yang harus Anda tambahkan ke program Anda untuk membuat kontrol khusus. Perlu diingat bahwa semua metode dan properti dari kontrol Kotak centang yang sebenarnya ada di kelas yang disediakan oleh .NET Framework: Sistem. Windows. Formulir. Kotak centang. Ini bukan bagian dari proyek Anda karena diinstal di Windows untuk semua program .NET. Tapi ada banyak itu.

Hal lain yang perlu diperhatikan adalah jika Anda menggunakan WPF (Windows Presentation Foundation), kelas .NET CheckBox berasal dari pustaka yang sama sekali berbeda bernama Sistem. Windows. Kontrol. Artikel ini hanya berfungsi untuk aplikasi Windows Forms, tetapi prinsip pewarisan di sini berfungsi untuk proyek VB.NET apa pun.

Misalkan proyek Anda memerlukan kontrol yang sangat mirip dengan salah satu kontrol standar. Misalnya, kotak centang yang berubah warna, atau menampilkan "wajah bahagia" kecil alih-alih menampilkan grafik "centang" kecil. Kami akan membangun kelas yang melakukan ini dan menunjukkan kepada Anda bagaimana menambahkannya ke proyek Anda. Meskipun ini mungkin berguna dengan sendirinya, tujuan sebenarnya adalah untuk mendemonstrasikan VB.NET's warisan.

Mari Mulai Pengodean

Untuk memulai, ubah nama Kotak Centang yang baru saja Anda tambahkan oldCheckBox. (Anda mungkin ingin berhenti menampilkan "Tampilkan Semua File" lagi untuk menyederhanakan Solution Explorer.) Sekarang tambahkan kelas baru ke proyek Anda. Ada beberapa cara untuk melakukan ini termasuk mengklik kanan proyek di Solution Explorer dan memilih "Tambah" lalu "Kelas" atau memilih "Tambahkan Kelas" di bawah di bawah item menu Proyek. Ubah nama file kelas baru menjadi kotak centang baru untuk menjaga semuanya tetap lurus. Terakhir, buka jendela kode untuk kelas dan tambahkan kode ini:

Kelas Publik newCheckBox Mewarisi Kotak Centang Private CenterSquareColor As Color = Color. Merah Dilindungi Overrides Sub OnPaint (ByVal pEvent _ Sebagai PaintEventArgs) Dim CenterSquare _ Sebagai Rectangle Baru (3, 4, 10, 12) MyBase. OnPaint (pEvent) If Me. Dicentang Kemudian pEvent. Grafik. FillRectangle (New SolidBrush (CenterSquareColor), CenterSquare) Berakhir Jika Akhiri Kelas Sub-Akhir

(Dalam artikel ini dan yang lain di situs, banyak kelanjutan garis digunakan untuk membuat garis pendek agar sesuai dengan ruang yang tersedia di halaman web.)

Hal pertama yang perlu diperhatikan tentang kode kelas baru Anda adalah Warisan kata kunci. Itu berarti bahwa semua properti dan metode dari VB.NET Framework Checkbox secara otomatis menjadi bagian dari ini. Untuk menghargai berapa banyak pekerjaan yang dihemat ini, Anda harus mencoba memprogram sesuatu seperti komponen CheckBox dari awal.

Ada dua hal utama yang perlu diperhatikan dalam kode di atas:

Yang pertama adalah penggunaan kode Mengesampingkan untuk mengganti perilaku .NET standar yang akan terjadi untuk OnPaint peristiwa. Peristiwa OnPaint dipicu setiap kali Windows mengetahui bahwa bagian dari tampilan Anda harus direkonstruksi. Contohnya adalah ketika jendela lain membuka bagian dari tampilan Anda. Windows memperbarui tampilan secara otomatis, tetapi kemudian memanggil peristiwa OnPaint dalam kode Anda. (Acara OnPaint juga disebut saat formulir awalnya dibuat.) Jadi, jika kita Override OnPaint, kita bisa mengubah cara tampilan di layar.

Yang kedua adalah cara Visual Basic menciptakan Kotak Centang. Setiap kali orang tua "Diperiksa" (yaitu, Saya. Diperiksa adalah Benar) maka kode baru yang kami berikan di kelas NewCheckBox kami akan mewarnai ulang pusat Kotak centang bukannya menggambar tanda centang.

Selebihnya adalah apa yang disebut Kode GDI +. Kode ini memilih persegi panjang dengan ukuran yang sama persis dengan pusat Kotak Centang dan warna dengan panggilan metode GDI +. "Angka ajaib" untuk memposisikan persegi panjang merah, "Persegi Panjang (3, 4, 10, 12)", ditentukan secara eksperimental. Saya baru saja mengubahnya sampai tampak benar.

Ada satu langkah yang sangat penting yang ingin Anda pastikan tidak meninggalkan prosedur Override:

MyBase. OnPaint (pEvent)

Override berarti kode Anda akan menyediakan semua kode untuk acara tersebut. Tetapi ini jarang yang Anda inginkan. Jadi VB menyediakan cara untuk menjalankan kode .NET normal yang akan dieksekusi untuk suatu peristiwa. Ini adalah pernyataan yang melakukan itu. Itu melewati parameter yang sama — pEvent — ke kode acara yang akan dieksekusi jika tidak ditimpa, MyBase. OnPaint.

Menggunakan Kontrol Baru

Karena kontrol baru kami tidak ada di kotak alat kami, itu harus dibuat dalam bentuk dengan kode. Tempat terbaik untuk melakukannya adalah dalam bentuk Beban prosedur acara.

Buka jendela kode untuk prosedur acara pemuatan formulir dan tambahkan kode ini:

Sub Pribadi frmCustCtrlEx_Load (Pengirim ByVal Sebagai Sistem. Objek, ByVal e Sebagai Sistem. EventArgs) Menangani MyBase. Load Dim customCheckBox Sebagai NewCheckBox baru () Dengan customCheckBox .Text = "Kotak Centang Kustom" .Left = oldCheckBox. Kiri .Top = oldCheckBox. Kotak centang Top + old. Tinggi. Ukuran = Ukuran Baru (oldCheckBox. Ukuran. Lebar + 50, oldCheckBox. Ukuran. Tinggi) Berakhir Dengan Kontrol. Tambahkan (customCheckBox) End Sub

Untuk menempatkan kotak centang baru pada formulir, kami telah mengambil keuntungan dari kenyataan bahwa sudah ada satu di sana dan hanya menggunakan ukuran dan posisi yang satu itu (disesuaikan sehingga properti Teks akan cocok). Kalau tidak, kita harus kode posisi secara manual. Ketika MyCheckBox telah ditambahkan ke formulir, kami kemudian menambahkannya ke koleksi Kontrol.

Tetapi kode ini tidak terlalu fleksibel. Sebagai contoh, warna Merah adalah hardcode dan mengubah warna memerlukan perubahan program. Anda mungkin juga menginginkan grafik alih-alih tanda centang.

Inilah kelas CheckBox baru yang ditingkatkan. Kode ini menunjukkan kepada Anda cara mengambil beberapa langkah selanjutnya menuju pemrograman berorientasi objek VB.NET.

Kelas Publik lebih baikCheckBox Mewarisi Kotak Centang Private CenterSquareColor As Color = Color. Blue Private CenterSquareImage As Bitmap Private CenterSquare Sebagai Rectangle Baru (3, 4, 10, 12) Dilindungi Override Sub OnPaint _ (ByVal pEvent As _ System. Windows. Formulir. PaintEventArgs) MyBase. OnPaint (pEvent) If Me. Dicentang Kemudian Jika CenterSquareImage Tidak Ada Lalu pEvent. Grafik. FillRectangle (New SolidBrush (CenterSquareColor), CenterSquare) Lain kali. Grafik. DrawImage (CenterSquareImage, CenterSquare) End If End If End If End Sub Properti Umum FillColor () Sebagai Warna Dapatkan FillColor = CenterSquareColor End Get Set (ByVal Value As Color) CenterSquareColor = Nilai Akhir Set Akhir Properti Properti Umum FillImage () Sebagai Bitmap Dapatkan FillImage = CenterSquareImage End Get Set (Nilai ByVal Sebagai Bitmap) CenterSquareImage = Nilai End Set End PropertyEnd Kelas

Mengapa Versi BetterCheckBox Lebih Baik

Salah satu peningkatan utama adalah penambahan dua Properti. Ini adalah sesuatu yang tidak dilakukan oleh kelas lama sama sekali.

Dua properti baru yang diperkenalkan adalah

FillColor

dan

FillImage

Untuk mengetahui bagaimana ini bekerja di VB.NET, coba eksperimen sederhana ini. Tambahkan kelas ke proyek standar dan kemudian masukkan kode:

Properti Publik Apapun yang didapat

Ketika Anda menekan Enter setelah mengetik "Get", VB.NET Intellisense mengisi seluruh blok kode Properti dan yang harus Anda lakukan adalah kode spesifik untuk proyek Anda. (Blok Get and Set tidak selalu diperlukan mulai dengan VB.NET 2010, jadi Anda setidaknya harus memberi tahu Intellisense sebanyak ini untuk memulainya.)

Properti Publik Apa pun Get End Get Set (nilai ByVal) End SetEnd Property

Blok-blok ini telah selesai pada kode di atas. Tujuan dari blok kode ini adalah untuk memungkinkan nilai properti diakses dari bagian lain dari sistem.

Dengan penambahan Metode, Anda akan berada di jalur yang tepat untuk membuat komponen lengkap. Untuk melihat contoh Metode yang sangat sederhana, tambahkan kode ini di bawah deklarasi Properti di kelas betterCheckBox:

Sub Publik Menekankan () Saya. Font = Sistem Baru. Gambar. Jenis huruf (_ "Microsoft Sans Serif", 12.0!, _ Sistem. Gambar. Gaya tulisan. Berani) Aku. Ukuran = Sistem Baru. Gambar. Ukuran (200, 35) CenterSquare. Offset (CenterSquare. Kiri - 3, CenterSquare. Top + 3) End Sub

Selain menyesuaikan Font yang ditampilkan dalam Kotak Centang, metode ini juga menyesuaikan ukuran kotak dan lokasi persegi panjang yang diperiksa untuk memperhitungkan ukuran baru. Untuk menggunakan metode baru, cukup kodekan dengan cara yang sama seperti pada metode apa pun:

Kotak MyBetterEmphasized. Menekankan()

Dan seperti Properti, Visual Studio secara otomatis menambahkan metode baru ke Microsoft's Intellisense!

Tujuan utama di sini adalah hanya menunjukkan bagaimana metode dikodekan. Anda mungkin menyadari bahwa kontrol Kotak centang standar juga memungkinkan Font diubah, sehingga metode ini tidak benar-benar menambahkan banyak fungsi.

Artikel berikutnya dalam seri ini, Memprogram Kontrol VB.NET Kustom - Melampaui Dasar!, menunjukkan metode yang sesuai, dan juga menjelaskan cara mengganti metode dalam kontrol kustom.

instagram story viewer