這個例子來自這篇文章中查詢。
控制ColorDialog提出了一種傳統的調色板,但事實是,Visual Studio是好得多,並顯示所有的名字在System.Drawing對象的屬性定義的顏色。
鑑於問題,有沒有向我們展示了這種顏色的列表,我們可以看到我們如何才能constriur之一,我們的控制。
例如,我們需要一個新的項目和兩種形式。
接力棒在第一種形式只需要調用的表格2,如下圖所示:

按鈕,代碼如下:
BtnColor_Click私人小組(作為System.Object的,BYVAL e由於的BYVAL發件人)處理btnColor.Click 作為新Form2的點心vForm2 vForm2.ShowDialog() END SUB
以這種形式將列印botoes ListBox和兩個(接受和取消),以下列形式:

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

這是DrawItem事件代碼
ListBox1_DrawItem私人小組(BYVAL發件人作為對象,像System.Windows.Forms.DrawItemEventArgs BYVALé)把手ListBox1.DrawItem 昏暗的矩形作為矩形= e.Bounds 如果(e.State和DrawItemState.Selected),然後 e.Graphics.FillRectangle(SystemBrushes.Highlight,矩形) 其他 e.Graphics.FillRectangle(Brushes.White,矩形) 結束如果 暗淡的String = ListBox1.Items nombreColor(e.Index) 昏暗的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由於的BYVAL發件人)處理btnAceptar.Click My.Forms.Form1.BackColor = Color.FromName(ListBox1.SelectedItem) END SUB BtnCancelar_Click私人小組(作為System.Object的,BYVAL e由於的BYVAL發件人)處理btnCancelar.Click Me.Close() END SUB
嗯,測試應用程序......如果一切順利,看起來像這樣:

我離開的一些定義:
Graphics.FillRectangle(方法):填充由一個坐標對,寬度和高度指定的矩形內部。
Graphics.DrawRectangle(方法):繪製由坐標對,寬度和高度指定的矩形。
Graphics.DrawString(方法):在指定的位置,並用指定的Brush和Font對象繪製指定的文本字符串。
希望這有助於你可以在項目中使用。
信息Bitacoras.com ...
在Bitacoras.com率:這個例子出現在這篇文章中的查詢。 控制ColorDialog tresenta我們傳統的調色板,但它是TRUé視覺工作室是好得多,並顯示出所有的顏色為您的n ......
一個很好的例子,謝謝。
太好了!
非常感謝!
! 非常好!
唯一,我的工作是“取消”按鈕。
哈哈,我忘了,但代碼是非常簡單:Me.Close
不能選擇透明色,它會是什麼?............ 其他顏色的,如果它的工作原理
salu2
是透明的顏色,不能用於作為一個表格的背景顏色,但如果應用到其他控件。
的評論!
這個例子中救了我的生活!......但是我能看到的prpiedades屏幕,在你改變顏色,因為它讓我看到“My.Forms.Form1.BackColor。”感謝salu2
你好
我得到一個錯誤預期的標識符完全相同。A如果(e.State和DrawItemState。 選擇版)
e.Graphics.FillRectangle(SystemBrushes.Highlight,矩形)
幫我由FA
Graciass
問候......
我在尋找技術做出更好的控制,必須像機場的設計,但我不知道,也不是我能找到的東西,請如果你能幫助我非常感謝你anetmano ...
這蘆薈,非常感謝你的這個例子。 我能夠將它應用到我的需要
謝謝你從梅里達,尤卡坦