मैं सी # का उपयोग करके अपने स्ट्रिंग से मिलान करने के लिए चयनित आइटम को कॉम्बो बॉक्स में कैसे सेट करूं?


197

मैं एक स्ट्रिंग "test1" है और मेरे बता गया होता है test1, test2और test3। मैं चयनित आइटम को "test1" पर कैसे सेट करूं? यही है, मैं अपनी स्ट्रिंग को कॉम्बो बॉक्स आइटम में से एक से कैसे मिलाऊं?

मैं नीचे लाइन के बारे में सोच रहा था, लेकिन यह काम नहीं करता है।

comboBox1.SelectedText = "test1"; 

यह कैसे काम नहीं करता है? क्या होता है जब यह लाइन ऑफ़ कोड चलता है?
केट ग्रेगोरी

@KateGregory यह सिर्फ मौजूदा पाठ के लिए "test1" स्ट्रिंग को
सम्‍मिलित

यदि आपके पास उपयोग किए जाने वाले आइटम मान को जानने का कोई तरीका है: comboBox1.SelectedValue = Value_of_your_string;
सेसर लियोन

SelectedText"चयनित" पाठ को test1 में बदलता है। यदि कोई "चयन" (चिह्नित पाठ) नहीं किया गया है, तो पाठ को कैरट की स्थिति में डाला जाएगा।
AAA

जवाबों:


278

यह काम कर जाना चाहिए:

Combox1.SelectedIndex = Combox1.FindStringExact("test1")

मेरे लिए एक बेहतर उत्तर देता है क्योंकि आपके पास एक वापसी मूल्य है जिसे आप एक चर में अस्थायी रूप से बचा सकते हैं और इसका उपयोग कर सकते हैं कि आप जिस मूल्य की तलाश कर रहे हैं उसे मिला है।
14एक्सल कोस्टास पेना

क्या होगा अगर combox1 में एक से अधिक "टेस्ट 1" मूल्य हैं
thoitbk

@thoitbk - कम से MSDN के अनुसार msdn.microsoft.com/en-us/library/... , विधि FindStringExact() "कॉम्बो बॉक्स है कि निर्दिष्ट स्ट्रिंग से मेल खाता में पहला आइटम ढूँढता है।"
डब स्टाइल

207

क्या आपने पाठ संपत्ति की कोशिश की है? इससे मेरा काम बनता है।

ComboBox1.Text = "test1";

चयनित टेक्स्ट संपत्ति कॉम्बो बॉक्स के टेक्स्टबॉक्स भाग में संपादन योग्य पाठ के चयनित भाग के लिए है।


7
निश्चित रूप से कि बस सूची से संबंधित आइटम का चयन करने के बजाय कॉम्बो बॉक्स के संपादन योग्य क्षेत्र में पाठ सेट करता है? यदि सूची आइटम संग्रह में केवल तार के बजाय ऑब्जेक्ट होते हैं, तो मुझे संदेह है कि यह उपयुक्त ListItem ऑब्जेक्ट का चयन करेगा, बल्कि यह केवल कॉम्बोबॉक्स पर पाठ गुण सेट करेगा?
टैबीकूल

9
यह नियंत्रण की चयनित संपत्ति को सेट करता है
हेनरिक मार्क

अच्छा लगा। फ़ॉन्ट आकार, वजन और परिवार पुलडाउन के लिए खूबसूरती से काम करता है। वर्गों के बीच कोई जाति या रूपांतरण नहीं। बहुत आसान!
लांस क्लीवलैंड

3
बस के मामले में: इस पैरामीटर को कॉम्बोक्स को पॉप्युलेट करने के बाद ही सेट किया जाना चाहिए।
एंटोनी रोड्रिगेज

12
मेरा कॉम्बोक्स ड्रॉपडाउनस्टाइल ड्रॉपडाउनलिस्ट है और .Text = "कुछ टेक्स्ट" काम नहीं करता है। इस समाधान ने मेरे लिए ठीक काम किया: Combox1.SelectedIndex = Combox1 .indStringExact ("test1")
मयंक

48

यह मानते हुए कि आपका कॉम्बोबॉक्स डेटबाउंड नहीं है, आपको अपने फॉर्म में "आइटम" संग्रह में ऑब्जेक्ट के सूचकांक को खोजने की आवश्यकता होगी और फिर "चयनित" संपत्ति को उचित इंडेक्स पर सेट करें।

comboBox1.SelectedIndex = comboBox1.Items.IndexOf("test1");

ध्यान रखें कि यदि आइटम नहीं मिला है, तो IndexOf फ़ंक्शन एक तर्क-धारणा को फेंक सकता है।


1
याद रखें इसके सिलेक्टेड नॉट सेलेक्टेडेम ... और कंपाइलर शिकायत नहीं करेंगे, बस कॉम्बोक्स वैल्यू सेट करने में असफल रहेंगे
रोब

आप तार्किक त्रुटियों है कि किसी भी अपवाद नहीं है प्यार नहीं करते, वे सिर्फ काम नहीं करते ...
स्पेंस

यह आइटम का चयन कर रहा है, लेकिन
कॉम्बोक्स

39

यदि आपके ComboBox में आइटम तार हैं, तो आप कोशिश कर सकते हैं:

comboBox1.SelectedItem = "test1";


दिन बचा लिया! चयनित आइटम को उस प्रकार से मेल खाना चाहिए - जो मेरे लिए था! मैं अपना सिर खुजला रहा था कि चयनित आइटम सेट क्यों नहीं था यहां तक ​​कि आइटम स्पष्ट रूप से था - एक प्रकार का बेमेल निकला!
सुधांशु मिश्रा

पूर्णता के लिए, उपरोक्त लिंक से विवरण प्राप्त करने के लिए उपयोगी है, खासकर जब से यह उत्तर @norbertB से पसंदीदा एक सहित अन्य उत्तरों द्वारा सुझाई गई मिलान जाँच करता है: जब आप चयनित ऑब्जेक्ट को किसी ऑब्जेक्ट पर सेट करते हैं, तो ComboBox उस ऑब्जेक्ट को बनाने का प्रयास करता है वर्तमान में सूची में एक का चयन किया गया। यदि ऑब्जेक्ट सूची में पाया जाता है , तो यह कॉम्बो बॉक्स के संपादित हिस्से में प्रदर्शित होता है और चयनित इंडेक्स गुण संबंधित इंडेक्स पर सेट होता है। यदि ऑब्जेक्ट सूची में मौजूद नहीं है, तो चयनित संपत्ति अपने वर्तमान मूल्य पर छोड़ दी जाती है।
DanG

10

मेरे लिए यह केवल काम किया:

foreach (ComboBoxItem cbi in someComboBox.Items)
{
    if (cbi.Content as String == "sometextIntheComboBox")
    {
        someComboBox.SelectedItem = cbi;
        break;
    }
}

MOD: और यदि आपके पास कॉम्बोक्सॉक्स में स्थापित वस्तुओं के रूप में अपनी खुद की वस्तुएं हैं, तो उनमें से एक के साथ कॉम्बो बॉक्स इट को स्थानापन्न करें:

foreach (Debitor d in debitorCombo.Items)
{
    if (d.Name == "Chuck Norris")
    {
        debitorCombo.SelectedItem = d;
        break;
    }
}

2
यह मेरे लिए काम करता है, लेकिन आपको सावधानी बरतने की ज़रूरत है कि आपके कॉम्बो बॉक्स में आइटम वास्तव में कॉम्बो बॉक्स हैं। अन्य वस्तुओं को भी इसमें डालना संभव है।
अनुदान

इसने WinRT 8.1 में शानदार काम किया। मैं वास्तव में एक विस्तार विधि में शीर्ष फॉर्चेट को लपेटता हूं जैसे कि डेव ने अपने SelectItemByValue () समाधान में लिखा था, और यह वास्तव में सही समाधान था।
स्पीडनेट

9

सिलेक्टेड टेक्स्ट को कैंडोबॉक्स में चयनित आइटम के लिए स्ट्रिंग संपादक में वास्तविक टेक्स्ट को प्राप्त करने या सेट करने के लिए है जैसा कि यहां दस्तावेज किया गया है । यदि आप सेट करते हैं तो यह बेकार हो जाता है:

comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;

उपयोग:

comboBox1.SelectedItem = "test1";

या:

comboBox1.SelectedIndex = comboBox1.Items.IndexOf("test1");

1
comboBox1.Items.IndexOf ... यदि आइटम खाली है, तो एक NullReferenceException को जोखिम में डालता है।
गैरी


7

मैंने एक्सटेंशन विधि का उपयोग किया है:

public static void SelectItemByValue(this ComboBox cbo, string value)
{
    for(int i=0; i < cbo.Items.Count; i++)
    {
        var prop = cbo.Items[i].GetType().GetProperty(cbo.ValueMember);
        if (prop!=null && prop.GetValue(cbo.Items[i], null).ToString() == value)
        {
             cbo.SelectedIndex = i;
             break;
        }
    } 
}

तो बस विधि का उपभोग:

ddl.SelectItemByValue(value);


4

Test1, test2, test3 के अनुसार कॉम्बो बॉक्स 1 संग्रह से संबंधित है, निम्नलिखित कथन काम करेगा।

comboBox1.SelectedIndex = 0; 

यह हमेशा काम नहीं करता है ... यहां देखें: stackoverflow.com/questions/12839444/…
JGFMK

4

यह समाधान मेरे द्वारा किए गए कुछ संशोधनों के साथ MSDN पर आधारित है।

  • यह स्ट्रिंग का सटीक या PART पाता है और इसे सेट करता है।

    private int lastMatch = 0;
    private void textBoxSearch_TextChanged(object sender, EventArgs e)
    {
        // Set our intial index variable to -1.
        int x = 0;
        string match = textBoxSearch.Text;
        // If the search string is empty set to begining of textBox
        if (textBoxSearch.Text.Length != 0)
        {
            bool found = true;
            while (found)
            {
                if (comboBoxSelect.Items.Count == x)
                {
                    comboBoxSelect.SelectedIndex = lastMatch;
                    found = false;
                }
                else
                {
                    comboBoxSelect.SelectedIndex = x;
                    match = comboBoxSelect.SelectedValue.ToString();
                    if (match.Contains(textBoxSearch.Text))
                    {
                        lastMatch = x;
                        found = false;
                    }
                    x++;
                }
            }
        }
        else
            comboBoxSelect.SelectedIndex = 0;
    }

मुझे आशा है कि मैंने मदद की!


3

मैं एक डेटाबेस से भरा een DataTable के साथ अपने ComboBox भर दिया है। फिर मैंने DisplayMember और ValueMember सेट कर दिया है। और मैं चयनित आइटम सेट करने के लिए इस कोड का उपयोग करता हूं।

foreach (DataRowView Row in ComboBox1.Items)
{
    if (Row["ColumnName"].ToString() == "Value") ComboBox1.SelectedItem = Row;
}

1

आपके पास ComboBox में वह संपत्ति नहीं है। आपके पास SelectItem या SelectionIndex है। यदि आपके पास कॉम्बो बॉक्स भरने के लिए उपयोग की जाने वाली वस्तुएं हैं तो आप SelectItem का उपयोग कर सकते हैं।

यदि आप वस्तुओं (संपत्ति वस्तुओं) का संग्रह प्राप्त नहीं कर सकते हैं और यह सुनिश्चित करते हैं कि जब तक आपको वह मूल्य नहीं मिल जाता है जो आप चाहते हैं और अन्य गुणों के साथ उपयोग करें।

आशा करता हूँ की ये काम करेगा।


1
_cmbTemplates.SelectedText = "test1"

या हो सकता है

_cmbTemplates.SelectedItem= _cmbTemplates.Items.Equals("test1");

इस कोड के साथ, आप SelectItem प्रॉपर्टी के लिए एक बूल असाइन करते हैं ... जो imho काम नहीं करेगा।
फ्रेडरिक घीसेल्स

1
  • कॉम्बोबॉक्स में लिस्ट एन्यूमरेट करें
  • बराबर वालों को लिस्टडेक्स सेट कॉम्बोक्स प्राप्त करें
  • सेट लिस्टडेक्स को मिला।

लेकिन अगर मुझे कोड समीक्षक के रूप में ऐसा कोड दिखाई देता है, तो मैं सभी विधि एल्गोरिथम पर पुनर्विचार करने की सलाह दूंगा।


2
आपने इसे उत्तर के रूप में क्यों प्रदान किया है?

1

मैंने कॉम्बोबॉक्स डेटा बाइंड के लिए KeyValuePair का उपयोग किया था और मैं मूल्य द्वारा आइटम ढूंढना चाहता था इसलिए मेरे मामले में यह काम किया:

comboBox.SelectedItem = comboBox.Items.Cast<KeyValuePair<string,string>>().First(item=> item.Value == "value to match");

1

Combobox में MySecondObject (प्रकार MyObject) का पता लगाएं (MyObjects की एक सूची से युक्त) और आइटम का चयन करें:

foreach (MyObject item in comboBox.Items)
{
   if (item.NameOrID == mySecondObject.NameOrID)
    {
        comboBox.SelectedItem = item;
        break;
    }
}

0
  ListItem li = DropDownList.Items.FindByValue("13001");
  DropDownList.SelectedIndex = ddlCostCenter.Items.IndexOf(li);

अपने मामले के लिए आप उपयोग कर सकते हैं

DropDownList.Items.FindByText("Text");

0
combo.Items.FindByValue("1").Selected = true;

3
यदि "1" नहीं मिलता है, तो यह एक अपवाद का भी जोखिम रखता है।
गैरी

0

कॉम्बो बॉक्स आइटम की सभी विधियाँ, ट्रिक्स और लाइनें तब तक काम नहीं करेंगी जब तक कि कॉम्बो बॉक्स में कोई अभिभावक न हो।


0

मैंने एक फंक्शन बनाया है जो मूल्य के सूचकांक को लौटाएगा

        public static int SelectByValue(ComboBox comboBox, string value)
        {
            int i = 0;
            for (i = 0; i <= comboBox.Items.Count - 1; i++)
            {
                DataRowView cb;
                cb = (DataRowView)comboBox.Items[i];
                if (cb.Row.ItemArray[0].ToString() == value)// Change the 0 index if your want to Select by Text as 1 Index
                {
                    return i;
                }
            }
            return -1;
        }

0

यह मेरे लिए काम करता है .....

comboBox.DataSource.To<DataTable>().Select(" valueMember = '" + valueToBeSelected + "'")[0]["DislplayMember"];

1
हालांकि यह कोड प्रश्न का उत्तर दे सकता है, यह समझाने के लिए बेहतर है कि समस्या को कैसे हल किया जाए और उदाहरण या संदर्भ के रूप में कोड प्रदान किया जाए। कोड-केवल उत्तर भ्रामक और संदर्भ की कमी हो सकते हैं।
रॉबर्ट कोलंबिया

सलाह के लिए धन्यवाद!
जयदीप करना


-2

कृपया इस तरह से प्रयास करें, यह मेरे लिए काम करता है:

Combobox1.items[Combobox1.selectedIndex] = "replaced text";

आपको जांचना चाहिए कि चयनित इंडेक्स -1 पहले नहीं है, या इससे अधिक सटीक है कि यह> = 0 और <.items.length है।
गैरी

-3

यह काम करना चाहिए

Yourcomboboxname.setselecteditem("yourstring");

और अगर आप डेटाबेस स्ट्रिंग सेट करना चाहते हैं तो इसका उपयोग करें

Comboboxname.setselecteditem(ps.get string("databasestring"));
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.