這個例子從一個查詢出現在這篇文章 。
ColorDialog控制提出了一種傳統的調色板,但事實是 ,Visual Studio是非常漂亮的顯示所有的名稱在 System.Drawing對象的屬性定義的顏色。
鑑於這個問題,有沒有控制向我們展示了這種顏色,我們看到我們如何constriur之一,我們的清單。
對於例子中,我們需要一個新的項目和兩種形式。
在第一種形式警棍只需要調用表2,如下圖所示:

按鈕,代碼如下:
BtnColor_Click私人小組(為 System.Object,BYVAL e視 System.EventArgs BYVAL發送者)把手btnColor.Click 作為新Form2的DIM vForm2 vForm2.ShowDialog() END SUB
和n的形式將 botoes ListBox和兩個(確定和取消),如下列形式:

在窗體的Load事件建立ListBox控件的一些屬性和負載用下面的代碼的顏色的名稱:
Form2_Load私人小組(為 System.Object,BYVAL e視 System.EventArgs BYVAL發送者)把手MyBase.Load ListBox1.DrawMode = DrawMode.OwnerDrawFixed ListBox1.ItemHeight = 20 ListBox1.Items.Clear() ListBox1.BeginUpdate() 對於每個作為 Reflection.PropertyInfo中的GetType(彩色)PI。GetProperties(或Reflection.BindingFlags.Static Reflection.BindingFlags.Public) ListBox1.Items.Add(pi.Name) 下一頁 ListBox1.EndUpdate() END SUB
在負載“ListBox1.DrawMode = DrawMode.OwnerDrawFixed”的所有元素的控制手工繪製,並具有相同的高度州的第一行。 對此,安定寶,DrawItem事件觸發之前每個項目表演。
要設置ListBox的DrawItem事件,選擇(在設計視圖)ListBox1中,按F4查看屬性,並在屬性框上方選擇閃電看到的事件,控制可用,我們期待的DrawItem雙擊。 下圖說明了如何:

這是DrawItem事件代碼
ListBox1_DrawItem私人小組(作為對象,BYVAL e視 System.Windows.Forms.DrawItemEventArgs BYVAL發送者)把手ListBox1.DrawItem 昏暗的矩形作為矩形= e.Bounds 如果(e.State而DrawItemState.Selected)然後 e.Graphics.FillRectangle(SystemBrushes.Highlight,矩形) 其他 e.Graphics.FillRectangle(Brushes.White,矩形) 結束如果 DIM作為字符串= ListBox1.Items nombreColor(e.Index) DIM b由於新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私人小組(為 System.Object,BYVAL e視 System.EventArgs BYVAL發送者)把手btnAceptar.Click My.Forms.Form1.BackColor = Color.FromName(ListBox1.SelectedItem) END SUB BtnCancelar_Click私人小組(為 System.Object,BYVAL e視 System.EventArgs BYVAL發送者)把手btnCancelar.Click Me.Close() END SUB
好了,測試應用程序... ...如果一切順利,將是這樣的:

我留下一些定義:
Graphics.FillRectangle(方法):填充由一對坐標,寬度和高度指定的矩形內部。
Graphics.DrawRectangle(方法):繪製由坐標對,寬度和高度指定的矩形。
Graphics.DrawString(方法):繪製在指定位置,並與指定的Brush和Font對象在指定的文本字符串。
我希望你了解,以及他們如何能在項目中使用。
Bitacoras.com信息...
Bitacoras.com值:這個例子從一個查詢出現在這篇文章。 控制ColorDialog tresenta我們一個傳統的調色板,但事實是,Visual Studio是非常漂亮,並顯示所有的顏色 ... ...的N
很好的例子,謝謝。
太棒了!
這是非常感謝!
! 很好!
唯一不為我工作了取消按鈕。
哈哈,我忘了,但代碼很簡單:Me.Close
不能選擇透明色,因為它會:... ... ... ... ... 如果它工作的其他顏色
salu2
是透明的顏色不能被應用作為一個窗體的背景顏色,但如果應用到其他控件。
感謝您發表評論!
救了我的生活這個例子!... ...但我能看到屏幕prpiedades這將改變顏色?它不會讓我看看“My.Forms.Form1.BackColor。”salu2感謝
您好
我得到一個錯誤的預期準確識別<阿當(且e.State DrawItemState。 選擇版),然後
e.Graphics.FillRectangle(SystemBrushes.Highlight,矩形)
HELP ME FA
Graciass
問候 ... ...
我正在尋找技術作出的控制,必須像機場更美的設計,但我不知道我能找到的東西也沒有請,如果你能幫助我... ...與該感謝你非常anetmano
這 VERA,非常感謝你的這個例子。 可以將它應用於我的需要
感謝來自梅里達,尤卡坦你