Contoh ini muncul dari query di artikel ini .
Para ColorDialog kontrol menyajikan palet warna tradisional, tetapi kenyataannya adalah bahwa studio visual jauh lebih bagus dan menunjukkan semua warna dengan nama seperti yang didefinisikan dalam properti obyek System.Drawing.
Mengingat masalah yang tidak ada kontrol untuk menunjukkan kepada kita ini daftar warna kita melihat bagaimana kita dapat constriur satu diri kita sendiri.
Sebagai contoh kita membutuhkan sebuah proyek baru dan dua bentuk.
Dalam bentuk pertama tongkat hanya perlu memanggil Form 2, seperti terlihat pada gambar berikut:

tombol dan kode tersebut adalah sebagai berikut:
BtnColor_Click Private Sub (ByVal pengirim Sebagai System.Object, ByVal e Sebagai System.EventArgs) Menangani btnColor.Click As New Form2 Dim vForm2 vForm2.ShowDialog () End Sub
dan dalam bentuk ini akan n botoes ListBox dan dua (menerima dan membatalkan) seperti dalam bentuk berikut:

Dalam acara Load form menetapkan beberapa sifat ListBox dan membawa nama-nama warna dengan kode berikut:
Form2_Load Private Sub (ByVal pengirim Sebagai System.Object, ByVal e Sebagai System.EventArgs) Handles MyBase.Load ListBox1.DrawMode = DrawMode.OwnerDrawFixed ListBox1.ItemHeight = 20 ListBox1.Items.Clear () ListBox1.BeginUpdate () Untuk Setiap pi Sebagai Reflection.PropertyInfo Dalam GetType (Warna) GetProperties (Atau Reflection.BindingFlags.Public Reflection.BindingFlags.Static). ListBox1.Items.Add (pi.Name) Berikutnya ListBox1.EndUpdate () End Sub
Pada baris pertama Load "ListBox1.DrawMode = DrawMode.OwnerDrawFixed" menetapkan bahwa seluruh elemen kontrol diambil secara manual dan memiliki ketinggian yang sama. Ini ademças, acara DrawItem memicu pertunjukan sebelum setiap item.
Untuk mengatur acara DrawItem dari ListBox, pilih (dalam tampilan desain) ListBox1, kita tekan F4 untuk melihat properti, dan bagian atas kotak Properties pilih petir untuk melihat hal kontrol tersedia , kita DrawItem dan kita klik dua kali. Gambar berikut menggambarkan bagaimana:

dan ini adalah kode acara DrawItem
ListBox1_DrawItem Private Sub (ByVal pengirim Sebagai Obyek, e ByVal Sebagai System.Windows.Forms.DrawItemEventArgs) Menangani ListBox1.DrawItem Dim persegi panjang Sebagai Persegi Panjang = e.Bounds Jika (e.State Dan DrawItemState.Selected) Lalu e.Graphics.FillRectangle (SystemBrushes.Highlight, persegi panjang) Lain e.Graphics.FillRectangle (Brushes.White, persegi panjang) End If Dim As String = ListBox1.Items nombreColor (e.Index) Dim b As New SolidBrush (Color.FromName (nombreColor)) rectangulo.Inflate (-16, -2) e.Graphics.FillRectangle (b, New Rectangle (rectangulo.X, rectangulo.Y, 30, rectangulo.Height)) e.Graphics.DrawRectangle (Pens.Black, New Rectangle (rectangulo.X, rectangulo.Y, 30, rectangulo.Height)) Jika (e.State Dan DrawItemState.Selected) Lalu e.Graphics.DrawString (nombreColor, e.Font, Brushes.White, rectangulo.X + 34, rectangulo.Y + 2) Lain e.Graphics.DrawString (nombreColor, e.Font, Brushes.Black, rectangulo.X + 34, rectangulo.Y + 2) End If End Sub
Sekarang kita hanya perlu memprogram tombol eventosde seperti terlihat pada kode berikut:
BtnAceptar_Click Private Sub (ByVal pengirim Sebagai System.Object, ByVal e Sebagai System.EventArgs) Menangani btnAceptar.Click My.Forms.Form1.BackColor = Color.FromName (ListBox1.SelectedItem) End Sub BtnCancelar_Click Private Sub (ByVal pengirim Sebagai System.Object, ByVal e Sebagai System.EventArgs) Menangani btnCancelar.Click Me.Close () End Sub
Nah, untuk menguji aplikasi ... jika semua berjalan lancar, terlihat seperti ini:

Aku meninggalkan beberapa definisi:
Graphics.FillRectangle (Metode): Mengisi interior sebuah persegi panjang yang ditentukan oleh sepasang koordinat, lebar dan ketinggian.
Graphics.DrawRectangle (Metode): Buatlah persegi panjang ditentukan oleh sepasang koordinat, lebar dan ketinggian.
Graphics.DrawString (Metode): Buatlah string teks tertentu di lokasi tertentu dan dengan Brush ditentukan dan objek Font.
Semoga ini bisa membantu dan Anda dapat menggunakan dalam proyek Anda.
Informasi Bitacoras.com ...
Laju Bitacoras.com: Contoh ini muncul dari permintaan dalam artikel ini. Kontrol ColorDialog tresenta kita palet warna tradisional, tetapi tru e yang dari visual studio yang jauh lebih bagus dan menunjukkan semua warna untuk n Anda .....
Contoh yang sangat baik, terima kasih.
GREAT!
Sangat dihargai!
! Sangat baik!
satu-satunya yang saya bekerja adalah tombol batal.
haha, aku lupa, tetapi kode ini sangat sederhana: Me.Close
gagal untuk memilih warna transparan, itu akan terjadi? ........... yang lain warna jika bekerja
salu2
adalah bahwa warna transparan tidak dapat diterapkan sebagai warna latar belakang formulir, tetapi jika diterapkan pada kontrol yang lain.
Terima kasih atas komentar!
menyelamatkan hidup saya contoh ini ... tapi! karena saya bisa melihat layar prpiedades di mana Anda mengubah warna? karena itu mari saya lihat "My.Forms.Form1.BackColor." thanks salu2
halo
Saya mendapatkan error Diharapkan identifier persis. <A Jika (e.State Dan DrawItemState. Pilih red) Lalu
e.Graphics.FillRectangle (SystemBrushes.Highlight, persegi panjang)
HELP ME OLEH FA
Graciass
Salam ...
Saya mencari teknik untuk membuat desain yang lebih bagus dari kontrol yang harus seperti bandara, tapi saya tidak tahu Saya juga tidak bisa menemukan sesuatu silahkan jika Anda bisa membantu saya dengan bahwa dari anetmano terima kasih banyak ...
VERA ini, terima kasih banyak untuk contoh ini. Apakah saya bisa menerapkannya untuk kebutuhan saya
Terima kasih dari Merida, Yucatan