Memperluas kontrol yang ada
Jika Anda ingin menambahkan lebih banyak fitur ke kontrol yang ada, Anda dapat membuat kontrol yang mewarisi dari kontrol yang ada. Kontrol baru berisi semua kemampuan dan aspek visual kontrol dasar, tetapi memberi Anda kesempatan untuk memperluasnya. Misalnya, jika Anda membuat kontrol yang mewarisi Button, kontrol baru Anda akan terlihat dan bertindak persis seperti tombol. Anda dapat membuat metode dan properti baru untuk menyesuaikan perilaku kontrol. Beberapa kontrol memungkinkan Anda mengambil alih OnPaint metode untuk mengubah tampilan kontrol.
Menambahkan kontrol kustom ke proyek
Setelah membuat proyek baru, gunakan templat Visual Studio untuk membuat kontrol pengguna. Langkah-langkah berikut menunjukkan cara menambahkan kontrol pengguna ke proyek Anda:
Di Visual Studio, temukan panel Project Explorer . Klik kanan pada proyek dan pilih Tambahkan>Kelas.
Dalam kotak Nama , ketik nama untuk kontrol pengguna Anda. Visual Studio menyediakan nama default dan unik yang dapat Anda gunakan. Selanjutnya, tekan Tambahkan.
Setelah kontrol pengguna dibuat, Visual Studio membuka editor kode untuk kontrol. Langkah selanjutnya adalah mengubah kontrol kustom ini menjadi tombol dan memperluasnya.
Mengubah kontrol kustom menjadi tombol
Di bagian ini, Anda mempelajari cara mengubah kontrol kustom menjadi tombol yang menghitung dan menampilkan berapa kali kontrol diklik.
Setelah Anda menambahkan kontrol kustom ke proyek Anda bernama CustomControl1
, perancang kontrol harus dibuka. Jika tidak, klik dua kali pada kontrol di Penjelajah Solusi. Ikuti langkah-langkah ini untuk mengonversi kontrol kustom menjadi kontrol yang mewarisi dan Button
memperluasnya:
Dengan perancang kontrol terbuka, tekan F7 atau klik kanan pada jendela perancang dan pilih Tampilkan Kode.
Di editor kode, Anda akan melihat definisi kelas:
namespace CustomControlProject { public partial class CustomControl2 : Control { public CustomControl2() { InitializeComponent(); } protected override void OnPaint(PaintEventArgs pe) { base.OnPaint(pe); } } }
Public Class CustomControl2 Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs) MyBase.OnPaint(e) 'Add your custom paint code here End Sub End Class
Pertama, tambahkan variabel cakupan kelas bernama
_counter
.private int _counter = 0;
Private _counter As Integer = 0
Ambil alih metode
OnPaint
. Metode ini menarik kontrol. Kontrol harus menggambar string di atas tombol, jadi Anda harus memanggil metode kelasOnPaint
dasar terlebih dahulu, lalu menggambar string.protected override void OnPaint(PaintEventArgs pe) { // Draw the control base.OnPaint(pe); // Paint our string on top of it pe.Graphics.DrawString($"Clicked {_counter} times", Font, Brushes.Purple, new PointF(3, 3)); }
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs) ' Draw the control MyBase.OnPaint(e) ' Paint our string on top of it e.Graphics.DrawString($"Clicked {_counter} times", Font, Brushes.Purple, New PointF(3, 3)) End Sub
Terakhir, ambil alih
OnClick
metode . Metode ini dipanggil setiap kali kontrol ditekan. Kode akan meningkatkan penghitung, dan kemudian memanggilInvalidate
metode , yang memaksa kontrol untuk menggambar ulang dirinya sendiri.protected override void OnClick(EventArgs e) { // Increase the counter and redraw the control _counter++; Invalidate(); // Call the base method to invoke the Click event base.OnClick(e); }
Protected Overrides Sub OnClick(e As EventArgs) ' Increase the counter and redraw the control _counter += 1 Invalidate() ' Call the base method to invoke the Click event MyBase.OnClick(e) End Sub
Kode akhir akan terlihat seperti cuplikan berikut:
public partial class CustomControl1 : Button { private int _counter = 0; public CustomControl1() { InitializeComponent(); } protected override void OnPaint(PaintEventArgs pe) { // Draw the control base.OnPaint(pe); // Paint our string on top of it pe.Graphics.DrawString($"Clicked {_counter} times", Font, Brushes.Purple, new PointF(3, 3)); } protected override void OnClick(EventArgs e) { // Increase the counter and redraw the control _counter++; Invalidate(); // Call the base method to invoke the Click event base.OnClick(e); } }
Public Class CustomControl1 Private _counter As Integer = 0 Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs) ' Draw the control MyBase.OnPaint(e) ' Paint our string on top of it e.Graphics.DrawString($"Clicked {_counter} times", Font, Brushes.Purple, New PointF(3, 3)) End Sub Protected Overrides Sub OnClick(e As EventArgs) ' Increase the counter and redraw the control _counter += 1 Invalidate() ' Call the base method to invoke the Click event MyBase.OnClick(e) End Sub End Class
Sekarang setelah kontrol dibuat, kompilasi proyek untuk mengisi jendela Kotak Alat dengan kontrol baru. Buka perancang formulir dan seret kontrol ke formulir. Saat Anda menjalankan proyek dan mengklik tombol , Anda akan melihat bahwa itu menghitung klik dan melukis teks di atas tombol.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk