Bagikan melalui


Kontrol kustom (Formulir Windows .NET)

Dengan Formulir Windows, Anda dapat mengembangkan dan menerapkan kontrol baru. Anda dapat membuat kontrol pengguna baru, memodifikasi kontrol yang ada melalui pewarisan, atau menulis kontrol kustom yang melakukan lukisannya sendiri. Artikel ini menyoroti perbedaan di antara berbagai jenis kontrol yang dapat Anda warisi, dan memberi Anda informasi tentang cara memilih jenis kontrol tertentu untuk proyek Anda.

Penting

Dokumentasi Panduan Desktop untuk .NET 7 dan .NET 6 sedang dibangun.

Kelas kontrol dasar

Kelas Control adalah kelas dasar untuk kontrol Formulir Windows. Ini menyediakan infrastruktur yang diperlukan untuk tampilan visual dalam aplikasi Formulir Windows dan menyediakan kemampuan berikut:

  • Mengekspos handel jendela.
  • Mengelola perutean pesan.
  • Menyediakan peristiwa mouse dan keyboard, dan banyak peristiwa antarmuka pengguna lainnya.
  • Menyediakan fitur tata letak tingkat lanjut.
  • Berisi banyak properti khusus untuk tampilan visual, seperti ForeColor, , BackColorHeight, dan Width.

Karena begitu banyak infrastruktur yang disediakan oleh kelas dasar, relatif mudah untuk mengembangkan kontrol Formulir Windows Anda sendiri.

Membuat kontrol Anda sendiri

Ada tiga jenis kontrol kustom yang dapat Anda buat: kontrol pengguna, kontrol yang diperluas, dan kontrol kustom. Tabel berikut ini membantu Anda memutuskan jenis kontrol mana yang harus Anda buat:

Jika ... Buat ...
  • Anda ingin menggabungkan fungsionalitas beberapa kontrol Formulir Windows ke dalam satu unit yang dapat digunakan kembali.
Rancang kontrol pengguna dengan mewarisi dari System.Windows.Forms.UserControl.
  • Sebagian besar fungsionalitas yang Anda butuhkan sudah identik dengan kontrol Formulir Windows yang ada.
  • Anda tidak memerlukan antarmuka pengguna grafis kustom, atau Anda ingin merancang antarmuka pengguna grafis baru untuk kontrol yang sudah ada.
Perluas kontrol dengan mewarisi dari kontrol Formulir Windows tertentu.
  • Anda ingin memberikan representasi grafis kustom kontrol Anda.
  • Anda perlu menerapkan fungsionalitas kustom yang tidak tersedia melalui kontrol standar.
Buat kontrol kustom dengan mewarisi dari System.Windows.Forms.Control.

Kontrol pengguna

Kontrol pengguna adalah kumpulan kontrol Formulir Windows yang disajikan sebagai kontrol tunggal kepada konsumen. Kontrol semacam ini disebut sebagai kontrol komposit. Kontrol yang terkandung disebut kontrol konstituen.

Kontrol pengguna menyimpan semua fungsionalitas melekat yang terkait dengan setiap kontrol Formulir Windows yang terkandung dan memungkinkan Anda mengekspos dan mengikat properti mereka secara selektif. Kontrol pengguna juga menyediakan banyak fungsionalitas penanganan keyboard default tanpa upaya pengembangan tambahan di pihak Anda.

Misalnya, kontrol pengguna dapat dibuat untuk menampilkan data alamat pelanggan dari database. Kontrol ini akan mencakup DataGridView kontrol untuk menampilkan bidang database, BindingSource untuk menangani pengikatan ke sumber data, dan BindingNavigator kontrol untuk menelusuri rekaman. Anda dapat secara selektif mengekspos properti pengikatan data, dan Anda dapat mengemas dan menggunakan kembali seluruh kontrol dari aplikasi ke aplikasi.

Untuk informasi selengkapnya, lihat Gambaran umum kontrol pengguna.

Kontrol yang diperluas

Anda dapat memperoleh kontrol yang diwariskan dari kontrol Formulir Windows yang ada. Dengan pendekatan ini, Anda dapat menyimpan semua fungsionalitas yang melekat dari kontrol Formulir Windows, lalu memperluas fungsionalitas tersebut dengan menambahkan properti kustom, metode, atau fitur lainnya. Dengan opsi ini, Anda dapat mengambil alih logika cat kontrol dasar, lalu memperluas antarmuka penggunanya dengan mengubah tampilannya.

Misalnya, Anda dapat membuat kontrol yang berasal dari Button kontrol yang melacak berapa kali pengguna mengkliknya.

Dalam beberapa kontrol, Anda juga dapat menambahkan tampilan kustom ke antarmuka pengguna grafis kontrol Anda dengan mengambil alih OnPaint metode kelas dasar. Untuk tombol yang diperluas yang melacak klik, Anda dapat mengambil alih OnPaint metode untuk memanggil implementasi OnPaintdasar , lalu menggambar jumlah klik di satu sudut Button area klien kontrol.

Kontrol kustom

Cara lain untuk membuat kontrol adalah dengan membuat kontrol secara substansial dari awal dengan mewarisi dari Control. Kelas ini Control menyediakan semua fungsionalitas dasar yang diperlukan oleh kontrol, termasuk peristiwa penanganan mouse dan keyboard, tetapi tidak ada fungsionalitas khusus kontrol atau antarmuka grafis.

Membuat kontrol dengan mewarisi dari Control kelas membutuhkan lebih banyak pemikiran dan upaya daripada mewarisi dari UserControl atau kontrol Formulir Windows yang ada. Karena banyak implementasi yang ditinggalkan untuk Anda, kontrol Anda dapat memiliki fleksibilitas yang lebih besar daripada kontrol komposit atau diperluas, dan Anda dapat menyesuaikan kontrol Anda agar sesuai dengan kebutuhan Anda.

Untuk menerapkan kontrol kustom, Anda harus menulis kode untuk OnPaint peristiwa kontrol, yang mengontrol bagaimana kontrol digambar secara visual. Anda juga harus menulis perilaku khusus fitur apa pun untuk kontrol Anda. Anda juga dapat mengambil alih WndProc metode dan menangani pesan windows secara langsung. Ini adalah cara paling kuat untuk membuat kontrol, tetapi untuk menggunakan teknik ini secara efektif, Anda harus terbiasa dengan Microsoft Win32® API.

Contoh kontrol kustom adalah kontrol jam yang menduplikasi tampilan dan perilaku jam analog. Lukisan kustom dipanggil untuk menyebabkan tangan jam bergerak sebagai respons terhadap Tick peristiwa dari komponen internal Timer .

Pengalaman desain kustom

Jika Anda perlu menerapkan pengalaman waktu desain kustom, Anda dapat menulis perancang Anda sendiri. Untuk kontrol komposit, dapatkan kelas desainer kustom Anda dari ParentControlDesigner kelas atau DocumentDesigner . Untuk kontrol yang diperluas dan kustom, dapatkan kelas perancang ControlDesigner kustom Anda dari kelas .

DesignerAttribute Gunakan untuk mengaitkan kontrol Anda dengan perancang Anda.

Informasi berikut kedaluarsa tetapi dapat membantu Anda.