2009-02-07 12 views
13

मैं ड्रॉपडाउनलिस्ट शैली के साथ एक कॉम्बोबॉक्स का उपयोग करना चाहता हूं (वह एक जो बटन को एक बटन जैसा दिखता है ताकि आप एक मान दर्ज नहीं कर सकें) टेक्स्ट बॉक्स में कोई मान डालने के लिए। मैं चाहता हूं कि कम्बोबॉक्स में 'वाइल्डकार्ड्स' नामक एक टेक्स्ट लेबल हो और जैसा कि मैं सूची से वाइल्डकार्ड का चयन करता हूं, चयनित टेक्स्ट को टेक्स्ट बॉक्स में डाला जाता है और कम्बोबॉक्स टेक्स्ट 'वाइल्डकार्ड' रहता है। मेरी पहली समस्या यह है कि जब मैं combDox DropDownList शैली में होता हूं तो मैं टेक्स्ट मान सेट नहीं कर सकता। गुणों का उपयोग करना फ़ैलेट काम नहीं करता है जब आप क्लिक करते हैं तो पाठ मान को साफ़ कर दिया जाता है, comboBox.Text = "वाइल्डकार्ड" जोड़ना; form_load करने के लिए या तो काम नहीं करता है। क्या कोई मदद कर सकता है?सी # ड्रॉपडाउन सूची शैली में कॉम्बोबॉक्स, मैं टेक्स्ट कैसे सेट करूं?

उत्तर

23

कोड आपके द्वारा निर्दिष्ट:

comboBox.Text = "Wildcards"; 

... काम करना चाहिए। एकमात्र कारण यह नहीं होगा कि आपके द्वारा निर्दिष्ट पाठ कॉम्बोबॉक्स की आइटम सूची में कोई आइटम नहीं है। DropDownList शैली का उपयोग करते समय, आप केवल टेक्स्ट में मान सेट कर सकते हैं जो वास्तव में सूची में दिखाई देते हैं।

यदि ऐसा है कि आप वाइल्डकार्ड में टेक्स्ट सेट करने का प्रयास कर रहे हैं और वह आइटम सूची में प्रकट नहीं होता है, और वैकल्पिक समाधान स्वीकार्य नहीं है, तो आपको कोड के साथ थोड़ा गंदा होना पड़ सकता है और जोड़ना पड़ सकता है एक आइटम अस्थायी रूप से हटा दिया जाता है जब ड्रॉप-डाउन सूची का विस्तार किया जाता है।

private void button1_Click(object sender, EventArgs e) 
{ 
    if (!comboBox1.Items.Contains("Wildcards")) 
    { 
     comboBox1.Items.Add("Wildcards"); 
    } 

    comboBox1.Text = "Wildcards"; 
} 

private void comboBox1_DropDown(object sender, EventArgs e) 
{ 
    if (comboBox1.Items.Contains("Wildcards")) 
     comboBox1.Items.Remove("Wildcards"); 
} 

यह सुंदर त्वरित और गंदी लेकिन द्वारा बताया गया है:

उदाहरण के लिए, यदि आप एक फार्म कुछ आइटम के साथ "ComboBox1" और नाम के एक बटन नाम के एक बता गया युक्त है "Button1" यदि आप कुछ इस तरह कर सकता है DropDownClosed ईवेंट को कैप्चर करना भी आप इसे थोड़ा सा साफ कर सकते हैं, "वाइल्डकार्ड" आइटम को आवश्यकतानुसार वापस जोड़ सकते हैं।

+1

इसके लिए धन्यवाद, मैंने ब्लैकवॉप्स वेबसाइट से बहुत सी सी # सीखा और मैं अभी भी इसका उल्लेख करता हूं। धन्यवाद! –

+0

आपका स्वागत है :-) – BlackWasp

+1

विचित्र रूप से पर्याप्त है, फ़ॉर्म डिज़ाइनर के भीतर "टेक्स्ट" प्रॉपर्टी सेट करना पर्याप्त नहीं है - इसे मेरे मामले में पीछे कोड में सेट किया जाना चाहिए। इसे फॉर्म प्रॉपर्टी विंडो से सेट करने का प्रयास करने से बस "टेक्स्ट" संपत्ति को बंद करने के बाद साफ कर दिया जाएगा। – Rachael

-1

प्रयास करें इस

comboBox1.SelectedValue = "Wildcards"; 
-1

यह एक संभव समाधान हो सकता है:

comboBox1.SelectedValue = comboBox1.Items.FindByText("Wildcards").Value; 
2

आप formload पर या रूप निर्माता की एक वस्तु के चयन कर सकते हैं:

public MyForm() 
{ 
    InitializeComponent(); 

    comboBox.SelectedIndex = 0; 
} 

या

private void MyForm_Load(object sender, EventArgs e) 
{ 
    comboBox.SelectedIndex = 0; 
} 
+0

मुझे यह समाधान है कि यह समाधान कितना साफ है। +1 –

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