Kontrol dengan Dukungan Built-In Owner-Drawing
Gambar pemilik dalam Formulir Windows, yang juga dikenal sebagai gambar kustom, adalah teknik untuk mengubah tampilan visual kontrol tertentu.
Catatan
Kata "kontrol" dalam topik ini digunakan untuk berarti kelas yang berasal dari Control atau Component.
Biasanya, Windows menangani lukisan secara otomatis dengan menggunakan pengaturan properti seperti BackColor untuk menentukan tampilan kontrol. Dengan gambar pemilik, Anda mengambil alih proses pengecatan, mengubah elemen penampilan yang tidak tersedia dengan menggunakan properti. Misalnya, banyak kontrol memungkinkan Anda mengatur warna teks yang ditampilkan, tetapi Anda terbatas pada satu warna. Gambar pemilik memungkinkan Anda untuk melakukan hal-hal seperti menampilkan bagian teks dalam warna hitam dan sebagian berwarna merah.
Dalam praktiknya, gambar pemilik mirip dengan menggambar grafik pada formulir. Misalnya, Anda dapat menggunakan metode grafis dalam handler untuk acara formulir Paint untuk meniru ListBox
kontrol, tetapi Anda harus menulis kode Anda sendiri untuk menangani semua interaksi pengguna. Dengan gambar pemilik, kontrol menggunakan kode Anda untuk menggambar kontennya tetapi sebaliknya mempertahankan semua kemampuan intrinsiknya. Anda dapat menggunakan metode grafis untuk menggambar setiap item dalam kontrol atau untuk menyesuaikan beberapa aspek setiap item saat Anda menggunakan tampilan default untuk aspek lain dari setiap item.
Gambar Pemilik di Kontrol Formulir Windows
Untuk melakukan gambar pemilik dalam kontrol yang mendukungnya, Anda biasanya akan mengatur satu properti dan menangani satu atau beberapa peristiwa.
Sebagian besar kontrol yang mendukung gambar pemilik memiliki OwnerDraw
properti atau DrawMode
yang menunjukkan apakah kontrol akan meningkatkan peristiwa atau peristiwa terkait gambarnya ketika melukis dirinya sendiri.
Kontrol yang tidak memiliki OwnerDraw
properti atau DrawMode
mencakup DataGridView
kontrol, yang menyediakan peristiwa gambar yang terjadi secara otomatis, dan ToolStrip
kontrol, yang digambar menggunakan kelas penyajian eksternal yang memiliki peristiwa terkait gambarnya sendiri.
Ada banyak jenis peristiwa gambar yang berbeda, tetapi peristiwa gambar umum terjadi untuk menggambar satu item dalam kontrol. Penanganan aktivitas menerima EventArgs
objek yang berisi informasi tentang item yang digambar dan alat yang dapat Anda gunakan untuk menggambarnya. Misalnya, objek ini biasanya berisi nomor indeks item dalam koleksi induknya, Rectangle yang menunjukkan batas tampilan item, dan Graphics objek untuk memanggil metode cat. Untuk beberapa peristiwa, EventArgs
objek menyediakan informasi tambahan tentang item dan metode yang dapat Anda panggil untuk melukis beberapa aspek item secara default, seperti latar belakang atau persegi panjang fokus.
Untuk membuat kontrol yang dapat digunakan kembali yang berisi kustomisasi yang digambar pemilik Anda, buat kelas baru yang berasal dari kelas kontrol yang mendukung gambar pemilik. Daripada menangani peristiwa gambar, sertakan kode gambar pemilik Anda dalam penimpaan untuk metode atau metode EventName yang sesuai On
di kelas baru. Pastikan Anda memanggil metode atau metode EventName kelas On
dasar dalam hal ini sehingga pengguna kontrol Anda dapat menangani peristiwa gambar pemilik dan memberikan kustomisasi tambahan.
Kontrol Formulir Windows berikut mendukung gambar pemilik di semua versi .NET Framework:
MenuItem (digunakan oleh MainMenu dan ContextMenu)
Kontrol berikut ini mendukung gambar pemilik hanya di .NET Framework 2.0:
Kontrol berikut mendukung gambar pemilik dan baru di .NET Framework 2.0:
Bagian berikut ini menyediakan detail tambahan untuk setiap kontrol ini.
Kontrol ListBox dan ComboBox
Kontrol ListBox dan ComboBox memungkinkan Anda menggambar item individual dalam kontrol baik dalam satu ukuran, atau dalam berbagai ukuran.
Catatan
CheckedListBox Meskipun kontrol berasal dari ListBox kontrol, kontrol tidak mendukung gambar pemilik.
Untuk menggambar setiap item dengan ukuran yang sama, atur DrawMode
properti ke OwnerDrawFixed dan tangani DrawItem
peristiwa.
Untuk menggambar setiap item menggunakan ukuran yang berbeda, atur DrawMode
properti ke OwnerDrawVariable dan tangani peristiwa MeasureItem
dan DrawItem
. Kejadian ini MeasureItem
memungkinkan Anda menunjukkan ukuran item sebelum peristiwa terjadi untuk item tersebut DrawItem
.
Untuk informasi selengkapnya, termasuk contoh kode, lihat topik berikut:
Komponen MenuItem
Komponen MenuItem mewakili satu item menu dalam komponen MainMenu atau ContextMenu .
Untuk menggambar MenuItem, atur propertinya OwnerDraw
ke true
dan tangani peristiwanya DrawItem
. Untuk mengkustomisasi ukuran item menu sebelum DrawItem
peristiwa terjadi, tangani peristiwa item MeasureItem
.
Untuk informasi selengkapnya, termasuk contoh kode, lihat topik referensi berikut:
Kontrol TabKontrol
Kontrol memungkinkan TabControl Anda menggambar tab individual dalam kontrol. Gambar pemilik hanya memengaruhi tab; TabPage isi tidak terpengaruh.
Untuk menggambar setiap tab dalam TabControl, atur DrawMode
properti ke OwnerDrawFixed dan tangani DrawItem
peristiwa. Kejadian ini terjadi sekali untuk setiap tab hanya ketika tab terlihat di kontrol.
Untuk informasi selengkapnya, termasuk contoh kode, lihat topik referensi berikut:
Komponen TipsAlat
Komponen memungkinkan ToolTip Anda menggambar seluruh TipsAlat saat ditampilkan.
Untuk menggambar ToolTip, atur propertinya OwnerDraw
ke true
dan tangani peristiwanya Draw
. Untuk menyesuaikan ukuran ToolTip sebelum Draw
peristiwa terjadi, tangani Popup
peristiwa dan atur ToolTipSize properti di penanganan aktivitas.
Untuk informasi selengkapnya, termasuk contoh kode, lihat topik referensi berikut:
Kontrol Tampilan Daftar
Kontrol ini ListView memungkinkan Anda menggambar item, subitem, dan header kolom individual dalam kontrol.
Untuk mengaktifkan gambar pemilik dalam kontrol, atur properti ke OwnerDraw
true
.
Untuk menggambar setiap item dalam kontrol, tangani DrawItem
peristiwa.
Untuk menggambar setiap subitem atau header kolom dalam kontrol saat View properti diatur ke Details, tangani DrawSubItem
peristiwa dan DrawColumnHeader
.
Untuk informasi selengkapnya, termasuk contoh kode, lihat topik referensi berikut:
Kontrol TreeView
Kontrol ini TreeView memungkinkan Anda menggambar simpul individual dalam kontrol.
Untuk menggambar hanya teks yang ditampilkan di setiap simpul, atur DrawMode
properti ke OwnerDrawText dan tangani DrawNode
peristiwa untuk menggambar teks.
Untuk menggambar semua elemen setiap simpul, atur DrawMode
properti ke OwnerDrawAll dan tangani DrawNode
peristiwa untuk menggambar elemen mana pun yang Anda butuhkan, seperti teks, ikon, kotak centang, tanda plus dan minus, dan garis yang menghubungkan simpul.
Untuk informasi selengkapnya, termasuk contoh kode, lihat topik referensi berikut:
Kontrol DataGridView
Kontrol memungkinkan DataGridView Anda menggambar sel dan baris individual dalam kontrol.
Untuk menggambar sel individual, tangani CellPainting
peristiwa.
Untuk menggambar baris atau elemen baris individual, tangani satu atau kedua RowPrePaint
peristiwa dan RowPostPaint
. Peristiwa RowPrePaint
terjadi sebelum sel dalam baris dicat, dan RowPostPaint
peristiwa terjadi setelah sel dicat. Anda dapat menangani peristiwa dan CellPainting
peristiwa untuk melukis latar belakang baris, sel individual, dan latar depan baris secara terpisah, atau Anda dapat menyediakan penyesuaian tertentu di mana Anda membutuhkannya dan menggunakan tampilan default untuk elemen baris lainnya.
Untuk informasi selengkapnya, termasuk contoh kode, lihat topik berikut:
Cara: Menyesuaikan Tampilan Sel di Kontrol DataGridView Formulir Windows
Cara: Menyesuaikan Tampilan Baris di Kontrol Formulir Windows DataGridView
Kontrol ToolStrip
ToolStrip dan kontrol turunan memungkinkan Anda untuk menyesuaikan aspek penampilan mereka.
Untuk menyediakan penyajian kustom untuk ToolStrip kontrol, atur Renderer
properti ToolStrip, , ToolStripPanelToolStripManager, atau ToolStripContentPanel ke ToolStripRenderer
objek dan tangani satu atau beberapa dari banyak peristiwa gambar yang disediakan oleh ToolStripRenderer
kelas . Atau, atur Renderer
properti ke instans kelas Anda sendiri yang berasal dari ToolStripRenderer
, , ToolStripProfessionalRendereratau ToolStripSystemRenderer yang mengimplementasikan atau mengambil alih metode EventName tertentuOn
.
Untuk informasi selengkapnya, termasuk contoh kode, lihat topik berikut:
Baca juga
.NET Desktop feedback
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