Ovaj primjer je nastao iz upita u ovom članku .
ColorDialog kontrola predstavlja tradicionalni paleta boja, ali istina je da je Visual Studio je puno ljepše i pokazuje sve boje po imenu kao što je definirano u System.Drawing svojstva objekta.
S obzirom na problem koji ne postoji kontrola da nam pokaže ovaj popis boja vidimo kako možemo constriur jedan sami.
Na primjer trebamo novi projekt i dva oblika.
U prvom obliku palica samo na poziv Obrazac 2, kao što je prikazano na sljedećoj slici:

gumb i kod je kako slijedi:
BtnColor_Click Private Sub (ByVal pošiljatelja Kao System.Object, ByVal e kao System.EventArgs) Ručke btnColor.Click Kao što je Novi Form2 Dim vForm2 vForm2.ShowDialog () End Sub
i n obrazac će botoes listbox i dva (OK i Cancel) kao u sljedećem obliku:

U obliku je Učitaj događaj uspostaviti neka svojstva listbox kontrole i opterećenje imena boja sa sljedećim kodom:
Form2_Load Private Sub (ByVal pošiljatelja Kao System.Object, ByVal e kao System.EventArgs) Ručke MyBase.Load ListBox1.DrawMode = DrawMode.OwnerDrawFixed ListBox1.ItemHeight = 20 ListBox1.Items.Clear () ListBox1.BeginUpdate () Za svaku pi Kao Reflection.PropertyInfo U GetType (u boji). GetProperties (ili Reflection.BindingFlags.Static Reflection.BindingFlags.Public) ListBox1.Items.Add (pi.Name) Sljedeći ListBox1.EndUpdate () End Sub
U prvom retku Load "ListBox1.DrawMode = DrawMode.OwnerDrawFixed" navodi da su svi elementi kontrole izvući ručno i imaju istu visinu. To je, ADEMCO, DrawItem događaj aktivira pokazuju neposredno prije svake stavke.
Da biste postavili DrawItem slučaju listbox, odaberite (u prikazu dizajna) ListBox1, pritisnite F4 za prikaz svojstava, a na vrhu okviru Svojstva odaberite munja vidjeti događaj koji je dostupan kontrola , i mi radovati se DrawItem dvostruki klik. Sljedeća slika ilustrira kako:

i to je DrawItem događaj kod
ListBox1_DrawItem Private Sub (ByVal pošiljatelja kao objekt, ByVal e kao System.Windows.Forms.DrawItemEventArgs) Ručke ListBox1.DrawItem Dim pravokutnik kao pravokutnik = e.Bounds Ako (e.State i DrawItemState.Selected) Tada e.Graphics.FillRectangle (SystemBrushes.Highlight, pravokutnik) Drugo e.Graphics.FillRectangle (Brushes.White, pravokutnik) Kraj Ako je Dim kao niz = ListBox1.Items nombreColor (e.Index) Dim B kao New SolidBrush (Color.FromName (nombreColor)) rectangulo.Inflate (-16, -2) e.Graphics.FillRectangle (b, Novi Pravokutnik (rectangulo.X, rectangulo.Y, 30, rectangulo.Height)) e.Graphics.DrawRectangle (Pens.Black, Novi Pravokutnik (rectangulo.X, rectangulo.Y, 30, rectangulo.Height)) Ako (e.State i DrawItemState.Selected) Tada e.Graphics.DrawString (nombreColor, e.Font, Brushes.White, rectangulo.X + 34, rectangulo.Y + 2) Drugo e.Graphics.DrawString (nombreColor, e.Font, Brushes.Black, rectangulo.X + 34, rectangulo.Y + 2) Kraj Ako je End Sub
Sada mi samo treba da program eventosde dvije tipke kako je prikazano na sljedeći kod:
BtnAceptar_Click Private Sub (ByVal pošiljatelja Kao System.Object, ByVal e kao System.EventArgs) Ručke btnAceptar.Click My.Forms.Form1.BackColor = Color.FromName (ListBox1.SelectedItem) End Sub BtnCancelar_Click Private Sub (ByVal pošiljatelja Kao System.Object, ByVal e kao System.EventArgs) Ručke btnCancelar.Click Me.Close () End Sub
Pa, kako bi testirali aplikaciju ... ako sve ide dobro, bit će izgledati ovako:

Ja ostaviti neke definicije:
Graphics.FillRectangle (metoda): Ispunjava unutrašnjost pravokutnika određeno par koordinata, širina i visina.
Graphics.DrawRectangle (metoda): Nacrtajte pravokutnik određen koordinirati par, širine i visine.
Graphics.DrawString (metoda): Nacrtajte navedene tekstni niz na određenom mjestu i određenom Četka i Font objekti.
Nadam se da ćete naučiti i kako oni mogu koristiti u svojim projektima.
Bitacoras.com o ...
Bitacoras.com Vrijednost: Ovaj primjer je nastao iz upita u ovom članku. Kontrola ColorDialog tresenta nas tradicionalno paleta boja, ali istina je da je Visual Studio je puno ljepše i pokazuje sve boje za n ... ..
Vrlo dobar primjer, hvala.
SUPER!
To uvelike cijeni!
! Vrlo dobro!
jedino ne rade za mene je gumb Odustani.
haha, ja zaboravio, ali kod je vrlo jednostavna: Me.Close
ne za odabir transparentan boje, jer će: ... ... ... .. druge boje, ako se to radi
salu2
je da je transparentna boja ne može se primijeniti kao boju pozadine obrasca, ali ako primijeniti i na druge kontrole.
Hvala za komentiranje!
spasio moj život ovom primjeru! ... ali kao što sam se vidjeti zaslon prpiedades koji će promijeniti boju? to neće pustiti mene vidjeti "My.Forms.Form1.BackColor." salu2 hvala
bok
JA dobiti greška Očekivani identifikator točno. <Ako (i e.State DrawItemState. Odaberite ed) Tada
e.Graphics.FillRectangle (SystemBrushes.Highlight, pravokutnik)
Pomozi mi FA
Graciass
Pozdrav ...
Ja sam obličje za tehnike kako bi ljepši dizajn kontrola koji se mora biti poput zračne luke, ali ja nemam pojma ni sam mogao pronaći nešto molim ako bi mogao pomoć mene s tim ... hvala vam puno za anetmano
ovo Vera, puno ti hvala za ovaj primjer. Može li se odnose na moje potrebe
Hvala vam od Merida, Yucatan