इस उदाहरण में एक क्वेरी से पैदा हुई इस लेख .
नियंत्रण ColorDialog एक पारंपरिक रंग पैलेट प्रस्तुत करता है, लेकिन सच्चाई यह है कि दृश्य स्टूडियो बहुत अच्छे है और नाम से सभी रंग System.Drawing वस्तु गुणों में परिभाषित के रूप में दिखाता है.
समस्या यह है कि वहाँ कोई हमें रंग की इस सूची में हम देखते हैं कैसे हम खुद constriur कर सकते हैं दिखाने के नियंत्रण को देखते हुए.
उदाहरण के लिए हम एक नई परियोजना और दो रूपों की जरूरत है.
पहले फार्म में डंडों सिर्फ 2 फॉर्म फोन है, जैसा चित्र में दिखाया गया है:

बटन और कोड इस प्रकार है:
BtnColor_Click निजी उप (ByVal प्रेषक के रूप में System.Object, ByVal System.EventArgs के रूप में ई) हैंडल btnColor.Click के रूप में नई Form2 मंद vForm2 (vForm2.ShowDialog) अंत उप
और n botoes ListBox और दो (इस रूप में स्वीकार करते हैं और रद्द होगा) के रूप में निम्नलिखित के रूप में:

प्रपत्र लोड घटना में ListBox के कुछ गुणों की स्थापना और निम्नलिखित कोड के साथ रंग का नाम ले:
Form2_Load निजी उप (ByVal प्रेषक के रूप में System.Object, ByVal System.EventArgs के रूप में ई) हैंडल MyBase.Load ListBox1.DrawMode = DrawMode.OwnerDrawFixed ListBox1.ItemHeight = 20 (ListBox1.Items.Clear) (ListBox1.BeginUpdate) GetType के में Reflection.PropertyInfo (रंग) के रूप में हर गड़बड़ी के लिए. GetProperties (या Reflection.BindingFlags.Static Reflection.BindingFlags.Public) ListBox1.Items.Add (pi.Name) अगला (ListBox1.EndUpdate) अंत उप
लोड की पहली पंक्ति में "ListBox1.DrawMode = DrawMode.OwnerDrawFixed" स्थापित है कि नियंत्रण के सभी तत्वों को मैन्युअल रूप से तैयार कर रहे हैं और एक ही ऊंचाई है. इसका ademças है, DrawItem घटना प्रत्येक आइटम से पहले सिर्फ एक शो चलाता है.
ListBox का चयन करें, DrawItem घटना ListBox1 (डिज़ाइन दृश्य में) सेट करने के लिए, हम करने के लिए गुणों को देखने के लिए F4 दबाएँ, और गुण बॉक्स के ऊपर बिजली बोल्ट का चयन करने के लिए घटना है कि नियंत्रण उपलब्ध है , हम DrawItem और हम डबल क्लिक करें. निम्नलिखित छवि कैसे दिखाता है:

और इस DrawItem घटना का कोड है
ListBox1_DrawItem निजी उप (ऑब्जेक्ट, System.Windows.Forms.DrawItemEventArgs के रूप में ByVal ई के रूप में ByVal प्रेषक) ListBox1.DrawItem हैंडल आयत = e.Bounds के रूप में मंद आयत यदि फिर (e.State और DrawItemState.Selected) e.Graphics.FillRectangle (SystemBrushes.Highlight, आयत) अन्य e.Graphics.FillRectangle (Brushes.White, आयत) यदि अंत स्ट्रिंग = ListBox1.Items nombreColor (e.Index) के रूप में मंद नई SolidBrush ((nombreColor) Color.FromName) के रूप में मंद ख rectangulo.Inflate (-16, -2) e.Graphics.FillRectangle (ख, नई आयत (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 +) यदि अंत अंत उप
अब हम बस बटन कार्यक्रम की जरूरत है eventosde के रूप में निम्नलिखित कोड में दिखाया:
BtnAceptar_Click निजी उप (ByVal प्रेषक के रूप में System.Object, ByVal System.EventArgs के रूप में ई) हैंडल btnAceptar.Click My.Forms.Form1.BackColor = Color.FromName (ListBox1.SelectedItem) अंत उप BtnCancelar_Click निजी उप (ByVal प्रेषक के रूप में System.Object, ByVal System.EventArgs के रूप में ई) हैंडल btnCancelar.Click (Me.Close) अंत उप
खैर, आवेदन का परीक्षण करने के लिए ... अगर सब अच्छी तरह से चला गया, इस तरह दिखता है:

मैं कुछ परिभाषाओं को छोड़:
Graphics.FillRectangle (विधि): एक समन्वय जोड़ी, चौड़ाई और ऊंचाई के द्वारा निर्दिष्ट आयत के इंटीरियर भरता है.
Graphics.DrawRectangle (विधि) एक समन्वय जोड़ी, चौड़ाई और ऊंचाई के द्वारा निर्दिष्ट आयत ड्रा.
Graphics.DrawString (विधि): निर्दिष्ट पाठ स्ट्रिंग निर्दिष्ट स्थान पर और निर्दिष्ट ब्रश और फ़ॉन्ट वस्तुओं के साथ ड्रा.
उम्मीद है कि इस मदद करता है और आप अपनी परियोजनाओं में उपयोग कर सकते हैं.
सूचना Bitacoras.com ...
Bitacoras.com में दर: इस उदाहरण इस लेख में एक क्वेरी से उठी. ColorDialog नियंत्रण हमें एक पारंपरिक रंग पैलेट tresenta, लेकिन यह tru ई है कि दृश्य स्टूडियो के बहुत अच्छे है और अपने n के लिए सभी रंग दिखाता है .....
बहुत अच्छा उदाहरण के लिए, शुक्रिया.
महान है!
काफी सराहना की!
! बहुत अच्छा!
केवल बात यह है कि मैं काम रद्द बटन था.
haha, मैं भूल गया, लेकिन कोड बहुत सरल है: Me.Close
पारदर्शी रंग का चयन करने के लिए विफल रहता है, यह हो सकता है? ........... अन्य रंग अगर यह काम करता है
salu2
यह है कि किसी प्रपत्र की पृष्ठभूमि रंग के रूप में पारदर्शी रंग लागू नहीं कर सकते हैं, लेकिन अगर अन्य को नियंत्रित करने के लिए लागू है.
टिप्पणी के लिए धन्यवाद!
मेरे जीवन में इस उदाहरण को बचाया ...! लेकिन salu2 के रूप में मैं prpiedades स्क्रीन, जिस पर आप रंग बदलने के देखने को मिलता है क्योंकि यह देता है मुझे "My.Forms.Form1.BackColor." देख रहे हो? धन्यवाद
नमस्ते
मैं एक त्रुटि पहचानकर्ता की उम्मीद बिल्कुल <एक यदि (e.State और DrawItemState. को चुनें तो एड)
e.Graphics.FillRectangle (SystemBrushes.Highlight, आयत)
मुझे एफए द्वारा मदद
Graciass
नमस्ते ...
मैं तकनीक नियंत्रण है कि हवाई अड्डे की तरह होना चाहिए एक अच्छे डिजाइन बनाने के लिए देख रहा हूँ, लेकिन मुझे पता नहीं है और न ही मैं कुछ कृपया अगर तुम मुझे कि anetmano के साथ मदद आपको बहुत बहुत धन्यवाद ...
इस वेरा, आप इस उदाहरण के लिए बहुत बहुत धन्यवाद. मैं यह मेरी जरूरतों को लागू करने में सक्षम हो जाएगा
आप मेरिडा, Yucatan से धन्यवाद