2011-10-20 12 views
7

मैं WinForm में कॉम्बो बॉक्स का उपयोग कर रहा हूं लेकिन जब मुझे कॉम्बो बॉक्स में कोई आइटम चुना गया था तो चयनित आइटम पृष्ठभूमि रंग नीला है। मैं इस नीली पृष्ठभूमि रंग को हटाना चाहता हूं (विशेष रूप से फॉर्म लोड पर, फ़ॉर्म में अन्य नियंत्रण पर ध्यान केंद्रित करने की कोशिश की, लेकिन कॉम्बो हाइलाइट हटाया नहीं गया) लेकिन आइटम का चयन किया जाना चाहिए।कॉम्बोबॉक्स में चयनित आइटम की रंगीन हाइलाइटिंग रोकें?

क्या कोई इस पर मदद कर सकता है ...?

+0

सुंदर यकीन है कि तुम सिर्फ -1 के लिए चयनित सूचकांक सेट कर सकते हैं, लेकिन यह हो गया है कुछ समय। – asawyer

+1

लेकिन आइटम का चयन किया जाना चाहिए ... – Dhana

+0

क्या आप विंडोज़ पर एक विशेष रंग थीम का उपयोग कर रहे हैं ?? यह एक आम संयोजन पर नहीं होना चाहिए। उस कॉम्बो को हटाने और एक नया जोड़ने का प्रयास करें। @asawyer जो कॉम्बो साफ़ करेगा, लेकिन ओपी क्या नहीं पूछ रहा है;) – gbianchi

उत्तर

3

ऐसा प्रतीत होता है कि ऐसा करने का एकमात्र तरीका combobox नियंत्रण को उपclassing है।

http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/e234c4a7-0cf7-4284-a072-8152f7593002/

आपका मार्गदर्शन करने के लिए वेब पर अधिक शायद रहे हैं:

एक उदाहरण है जहाँ कोई करता है।

+0

दिए गए लिंक बताते हैं कि जब माउस combobox आइटम पर होवर करता है तो टूलटिप कैसे दिखाना है। यह सवाल का जवाब नहीं है। – Dialecticus

2

मैं this site

से अधिक कुछ पाया एक टाइमर बनाएँ और अपने SelectedIndexChanged का ईवेंट में सक्षम है, और घड़ी में सिर्फ ComboBox1.Select(0,0) इस ऐड चयन हिस्सा निकालना होगा और फिर को निष्क्रिय टाइमर। अन्य प्रवेश द्वारों जहां में आप टाइमर Enable कर सकते हैं की पहचान फिर से

कोड स्निपेट

private void comboBox1_SelectedValueChanged(object sender, EventArgs e) 
{ 
    //Get the item selected in the combobox 
    ComboBox cbx = (ComboBox)sender; 
    int idx = cbx.SelectedIndex;  
    string s1 = cbx.SelectedItem.ToString(); 
    // Enable the time so that the Highlight can be removed 
    timer1.Enabled = true; 
} 

private void timer1_Tick(object sender, EventArgs e) 
{ 
    // Remove the Highlight 
    comboBox1.Select(0, 0); 
    // Disable timer 
    timer1.Enabled = false; 
} 
+0

comboBox1.Select (0, 0) - काम नहीं करता है क्योंकि combobox 'dropdownlist' संपादन योग्य पाठ की अनुमति नहीं है .., – Dhana

+0

@Dana फिर 'comboBox1.SelectionLength = 0' कार्य सेट करता है? – V4Vendetta

1

वहाँ के लिए आप

private void myComboBox_Paint(object sender, PaintEventArgs e) 
{ 
    myComboBoxComboBox.SelectionLength = 0; 
} 

एक आसान समाधान है आशा है कि यह मदद करता है :)

+0

क्या यह चयन को कम नहीं करेगा? – elyashiv

2

मैं कर रहा हूँ एक बड़ा वीबी उपयोगकर्ता नहीं, और केवल एक्सेल में इसके साथ खेलता है, लेकिन मेरे कॉम्बोबॉक्स में चयन किए जाने पर भी यह समस्या थी। अंत में मुझे ब्लू टेक्स्ट हाइलाइटिंग से छुटकारा पाने का एक तरीका मिला।

मेरे पास उपयोगकर्ताफॉर्म पर कॉम्बोबॉक्स है। कॉम्बोबॉक्स का चयन करके और गुणों को देखकर, बस 'छुपा चयन' को सही में बदलकर मेरे लिए काम किया। आप कर सकते थे भी इसके लिए कोड: ComboBox1.HideSelection = सच

+0

यह सही समाधान है। यद्यपि आपका उत्तर वीबीए के बारे में है, यह WinForms के लिए सी # और वीबी.नेट के साथ समान है। आपको 'HideSelection' प्रॉपर्टी को 'true' पर सेट करने की आवश्यकता है। अजीब, यद्यपि; यह डिफ़ॉल्ट होना चाहिए। –

+0

@ कोडी ग्रे - मुझे विंडोज फॉर्म में कॉम्बोबॉक्स के लिए 'छुपा चयन' संपत्ति नहीं मिल सकती है। यह टेक्स्टबॉक्सबॉक्स और उसके द्वारा प्राप्त किए जाने वाले नियंत्रणों के लिए मौजूद है, लेकिन कॉम्बोबॉक्स नहीं है। जो शर्म की बात है, क्योंकि मैं वास्तव में एक पसंद करूंगा! (मैं विजुअल स्टूडियो 2013 का उपयोग .NET 4.5 के साथ कर रहा हूं) – JonP

+0

@jonp हम्म, मुझे नहीं पता कि मैं कई साल पहले उस टिप्पणी को लिखने पर क्या सोच रहा था। संभवतः उस समय मेरे लिए काम किया था। मैंने सोचा कि शायद कॉम्बोबॉक्स सिर्फ बेस क्लास विधि को छुपाता है, लेकिन संदर्भ स्रोत पर एक त्वरित रूप से पता चलता है कि इसमें टेक्स्टबॉक्स के समान पदानुक्रम भी नहीं है। यह वास्तव में ListControl से विरासत में मिलता है, जो नियंत्रण से विरासत में मिलता है। तो सेट करने के लिए कोई छिपी हुई संपत्ति नहीं है। शायद आप अंतर्निहित टेक्स्टबॉक्स नियंत्रण प्राप्त कर सकते हैं, हालांकि .NET ऐसा करने का कोई प्रबंधित तरीका प्रदान नहीं करता है। हैंडल प्राप्त करने के लिए आपको पी/Invoke का उपयोग करना होगा। ... –

2

ही मैं लगभग सब कुछ कोशिश की है हल करने के लिए:

  • this.BeginInvoke(new Action(() => { comboBox1.Select(0, 0); }));
  • combobox1.SelectionLength = 0;
  • DropDownList को DropdownStyle संपत्ति की स्थापना बदल रहा है comboBox.TabIndex
  • SendKeys.Send("{ESC}"); की कोशिश नहीं की गई क्योंकि यह फिर से नहीं है उत्तरदायी समाधान

कुछ भी मदद नहीं की। शायद क्योंकि मेरे पास मेरे combobox आइटम, केवल छवियों में पाठ नहीं है। केवल स्थिर है और काम कर समाधान एक और लेबल नियंत्रण पर ध्यान देने के ले जाने के लिए किया गया था:

label.Focus(); 

तुम भी है कि लेबल को छिपाने सकता है।

0

मैं एक ही समस्या में आया और एक समाधान समाधान खोजने के बाद मेरे पास @ वादिम के जैसा ही विचार था।

यहां एक छोटा सा उदाहरण है।

UI_Load ईवेंट में फ़ोकस को बदलने का पहला चरण है।

Private Sub UI_Load(sender As System.Object, e As System.EventArgs) Handles Me.Load  
    Me.lblTitle.Focus() 
End Sub 

अगला चरण मामले को संभालने के लिए जब किसी को एक नई मूल्य के लिए

Private Sub comboExportDates_SelectedIndexChanged(sender As Object, e As EventArgs) Handles comboExportDates.SelectedIndexChanged 
     Me.lblTitle.Focus() 
End Sub 

वर्क्स ठीक का चयन करता है मुझे

संबंधित मुद्दे