Bagikan melalui


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:

  1. Di Visual Studio, temukan panel Project Explorer . Klik kanan pada proyek dan pilih Tambahkan>Kelas.

    Klik kanan penjelajah solusi Visual Studio untuk menambahkan kontrol pengguna ke proyek Formulir Windows

  2. Dalam kotak Nama , ketik nama untuk kontrol pengguna Anda. Visual Studio menyediakan nama default dan unik yang dapat Anda gunakan. Selanjutnya, tekan Tambahkan.

    Dialog Tambahkan item di Visual Studio untuk Formulir Windows

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.

Formulir Windows untuk kontrol kustom .NET

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:

  1. Dengan perancang kontrol terbuka, tekan F7 atau klik kanan pada jendela perancang dan pilih Tampilkan Kode.

  2. 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
    
  3. Pertama, tambahkan variabel cakupan kelas bernama _counter.

    private int _counter = 0;
    
    Private _counter As Integer = 0
    
  4. Ambil alih metode OnPaint. Metode ini menarik kontrol. Kontrol harus menggambar string di atas tombol, jadi Anda harus memanggil metode kelas OnPaint 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
    
  5. Terakhir, ambil alih OnClick metode . Metode ini dipanggil setiap kali kontrol ditekan. Kode akan meningkatkan penghitung, dan kemudian memanggil Invalidate 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.

Jendela Visual Studio Toolbox untuk Formulir Windows memperlihatkan kontrol kustom.