Този пример е възникнало от една заявка в тази статия .
Контрол ColorDialog представя традиционната цветова палитра, но истината е, че Visual Studio е много по-хубав и показва всички цветове по име, така както са определени в System.Drawing свойства обектни.
Като се има предвид проблемът, че няма контрол, за да ни покаже този списък от цветове виждаме начина, по който човек може да се constriur.
Например ние се нуждаем от нов проект и две форми.
В първата форма палката, просто трябва да се обадите на формуляр 2, както е показано на следната фигура:

бутона и кода е както следва:
BtnColor_Click Private Sub (ByVal изпращача Като System.Object, ByVal Е, System.EventArgs,) Дръжки btnColor.Click Нова Form2 Дим vForm2 vForm2.ShowDialog () End Sub
и в тази форма N botoes падащ списък и две (ще приеме и да отмени), в следния вид:

В Load случай на формуляра установи някои свойства на падащ списък и да носят имената на цветовете със следния код:
Form2_Load Private Sub (ByVal изпращача Като System.Object, ByVal Е, System.EventArgs,) Дръжки MyBase.Load ListBox1.DrawMode = DrawMode.OwnerDrawFixed ListBox1.ItemHeight = 20 ListBox1.Items.Clear () ListBox1.BeginUpdate () За всеки PI Както Reflection.PropertyInfo В GetType (Color). GetProperties (или Reflection.BindingFlags.Static Reflection.BindingFlags.Public) ListBox1.Items.Add (pi.Name) До ListBox1.EndUpdate () End Sub
На първия ред на Load "ListBox1.DrawMode = DrawMode.OwnerDrawFixed" установи, че всички елементи на контрол, се изготвят ръчно и имат една и съща височина. Това ademças, DrawItem събитие предизвиква шоу точно преди всеки елемент.
За да настроите DrawItem случай на падащ списък, изберете (в режим на проектиране) ListBox1, натиснете F4, за да видите свойствата, и на върха на прозорец Свойства изберете светкавица, за да видите случай, че контролът е на разположение , ние DrawItem и ние двойно кликване. Следното изображение показва как:

и това е кодът на събитието DrawItem
ListBox1_DrawItem Private Sub (ByVal подателя като Object, ByVal Е Като System.Windows.Forms.DrawItemEventArgs), Дръжки ListBox1.DrawItem На Дим правоъгълник Като правоъгълник = e.Bounds Ако (e.State и DrawItemState.Selected) След това e.Graphics.FillRectangle (SystemBrushes.Highlight, правоъгълник) Още e.Graphics.FillRectangle (Brushes.White, правоъгълник) Крайна сметка, ако , Дим Като String = ListBox1.Items nombreColor (e.Index) Дим б като Ню SolidBrush (Color.FromName, (nombreColor)) rectangulo.Inflate (-16, -2) e.Graphics.FillRectangle (B, Ню правоъгълник (rectangulo.X, rectangulo.Y, 30, rectangulo.Height.)) e.Graphics.DrawRectangle (Pens.Black, Ню правоъгълник (rectangulo.X, rectangulo.Y, 30, rectangulo.Height.)) Ако (e.State и DrawItemState.Selected) След това e.Graphics.DrawString (nombreColor, e.Font Brushes.White, rectangulo.X + 34, rectangulo.Y + 2) Още e.Graphics.DrawString (nombreColor, e.Font Brushes.Black, rectangulo.X + 34, rectangulo.Y + 2) Крайна сметка, ако End Sub
Сега ние просто трябва да програмирате на бутоните eventosde, както е показано в следния код:
BtnAceptar_Click Private Sub (ByVal изпращача Като System.Object, ByVal Е, System.EventArgs,) Дръжки btnAceptar.Click My.Forms.Form1.BackColor = Color.FromName (ListBox1.SelectedItem) End Sub BtnCancelar_Click Private Sub (ByVal изпращача Като System.Object, ByVal Е, System.EventArgs,) Дръжки btnCancelar.Click Me.Close () End Sub
Е, за да изпита прилагането ... Ако всичко е минало добре, изглежда по следния начин:

Оставям на някои определения:
Graphics.FillRectangle (метод): изпълва вътрешността на правоъгълника, определен от координатната чифт, ширина и височина.
Graphics.DrawRectangle (метод): Начертайте правоъгълник, определен от една координатна двойка, ширина и височина.
Graphics.DrawString (метод): Начертайте определен текстов низ на определено място и с определено Четка и обекти на шрифта.
Надявам се това помага и можете да използвате във вашите проекти.
Информация Bitacoras.com ...
Курс в Bitacoras.com: Този пример е възникнало от заявка в тази статия. Контрол ColorDialog tresenta нас традиционна цветова палитра, но тя е на TRU д че на Visual Studio е много по-хубав и показва всички цветове за вашия N .....
Много добър пример, благодаря ви.
Чудесно!
Е много оценявам!
! Много добре!
Единственото нещо, което съм работил беше бутона Отказ.
хаха, аз забравих, но кодът е много проста: Me.Close
не успее да изберете прозрачен цвят, той ще бъде? ........... други цветове, ако тя работи
salu2
е, че прозрачен цвят не може да се прилага като цвета на фона на формуляр, но ако се приложи към други контроли.
Благодаря за коментар!
спаси живота ми този пример! ... но като мога да видя на екрана на prpiedades, в които можете да промените цвета, тъй като ви позволява ме види "My.Forms.Form1.BackColor." благодари salu2
здравей
Аз получите съобщение за грешка Вместо идентификатор точно. <A Ако (e.State и DrawItemState. Изберете ED) Тогава
e.Graphics.FillRectangle (SystemBrushes.Highlight, правоъгълник)
ПОМОГНЕТЕ МИ ОТ ФА
Graciass
Поздрави ...
Търся техники, за да направят по-приятен дизайн на контроли, които трябва да бъде като на летището, но нямам представа и не мога да намеря нещо, моля, ако можете да ми помогнете с това на anetmano много ви благодаря ...
този Вера, благодаря ви много за този пример. Ще мога ли да я приложите към моите нужди
Благодаря ви от Мерида, Юкатан