Bagikan melalui


Membuat gambaran umum kontrol baru

Dengan Windows Forms, Anda dapat membuat kontrol baru atau mengubah kontrol yang ada melalui pewarisan. Artikel ini menyoroti perbedaan di antara cara membuat kontrol baru, dan memberi Anda informasi tentang cara memilih jenis kontrol tertentu untuk proyek Anda.

Kelas kontrol dasar

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

  • Mengekspos pegangan jendela.
  • Mengelola perutean pesan.
  • Menyediakan event untuk mouse dan keyboard, serta banyak event antarmuka pengguna lainnya.
  • Menyediakan fitur tata letak tingkat lanjut.
  • Berisi banyak properti khusus untuk tampilan visual, seperti ForeColor, BackColor, Height, dan Width.

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

Buat kendali 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:

Kalau... Buat ...
  • Anda ingin menggabungkan fungsionalitas beberapa kontrol Windows Forms 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 Windows Forms 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 Windows Forms 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 Windows Forms 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 inheren yang terkait dengan setiap kontrol Windows Forms yang terkandung dan memungkinkan Anda untuk 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 kontrol DataGridView untuk menampilkan bidang database, BindingSource untuk menangani pengikatan ke sumber data, dan kontrol BindingNavigator 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 contoh kontrol pengguna semacam ini, lihat Cara: Menerapkan Atribut di Kontrol Formulir Windows.

Untuk informasi selengkapnya, lihat Gambaran umum kontrol pengguna.

Kontrol yang diperluas

Anda dapat membuat kontrol turunan dari kontrol Windows Forms yang ada. Dengan pendekatan ini, Anda dapat menyimpan semua fungsionalitas yang melekat dari kontrol Windows Forms, 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 kontrol Button yang melacak berapa kali pengguna mengkliknya.

Dalam beberapa kontrol, Anda juga dapat menambahkan tampilan kustom ke antarmuka pengguna kontrol Anda dengan meng-override metode OnPaint dari kelas dasar. Untuk tombol yang memiliki fungsi tambahan dan melacak klik, Anda dapat mengambil alih metode OnPaint untuk memanggil implementasi dasar OnPaint, lalu menampilkan jumlah klik di salah satu sudut area klien kontrol Button.

Untuk contoh memperluas kontrol, lihat Memperluas kontrol yang ada.

Kontrol khusus

Cara lain untuk membuat kontrol adalah dengan membuatnya sepenuhnya dari awal dengan mewarisi dari Control. Kelas 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 Windows Forms 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 metode kontrol, yang mengontrol bagaimana kontrol digambar secara visual. Anda juga harus menulis perilaku yang spesifik untuk fitur kontrol Anda. Anda juga dapat mengambil alih metode WndProc 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 peristiwa Tick dari komponen Timer internal.

Untuk informasi selengkapnya, lihat Membuat kontrol kustom sederhana.

Kontrol ActiveX

Meskipun infrastruktur Windows Forms telah dioptimalkan untuk menghosting kontrol Windows Forms, Anda masih dapat menggunakan kontrol ActiveX. Ada dukungan untuk tugas ini di Visual Studio. Untuk informasi selengkapnya, lihat Cara: Menambahkan Kontrol ActiveX ke Windows Forms.

Peringatan

Kontrol ActiveX tidak sepenuhnya didukung pada .NET. Kontrol ActiveX tetap didukung penuh pada .NET Framework.

Pengalaman desain kustom

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

Gunakan DesignerAttribute untuk mengaitkan kontrol Anda dengan perancang Anda.

Informasi berikut kedaluarsa tetapi mungkin membantu Anda.