2012-04-24 30 views
9

मैं एक कॉम्बो बॉक्स में एक एसक्यूएल कथन के लिए एक पैरा के रूप में एक मूल्य पास करना चाहता हूं। Winforms combobox मुझे मूल्य को पुनर्प्राप्त करने के लिए कई विकल्प देता है, अर्थात् चयनित इटैम, चयनित टेक्स्ट, और चयनित वैल्यू। इस परिदृश्य में उपयोग करने के लिए कौन सा सबसे अच्छा/सुरक्षित है?क्या मुझे Winforms combobox के चयनित Item, SelectedText, या SelectedValue का उपयोग करना चाहिए?

+0

DropDownStyle संपत्ति के लिए मूल्य क्या है? –

उत्तर

6

चयनित वैल्यू शायद
का उपयोग करने वाला सबसे अच्छा विकल्प है चयनित टेक्स्ट आपको संपादन योग्य भाग का चयनित टेक्स्ट देगा, चयनित आइटम आपको ऑब्जेक्ट वापस कर देगा और चयनित इंडेक्स आपको इंडेक्स वापस कर देगा। आम तौर पर चयनित अनुप्रयोगों के लिए निकाले गए और उपयोग किए जाते हैं। Combobox from MSDN

SelectedIndex Gets or sets the index specifying the currently selected item.    (Overrides ListControl.SelectedIndex.) 
SelectedItem Gets or sets currently selected item in the ComboBox. 
SelectedText Gets or sets the text that is selected in the editable portion of a ComboBox. 
SelectedValue Gets or sets the value of the member property specified by the ValueMember property. (Inherited from ListControl.) 
+0

अंततः मैं इसका परीक्षण करने के लिए चारों ओर मिल गया; जब मैंने चयनित वैल्यू की कोशिश की, तो यह बमबारी हुई। चयनित इटैम काम करता है, हालांकि: // स्ट्रिंग सेंटर = कॉम्बोबॉक्सकेंटर। चयन वैल्यू।तार(); <- ऑब्जेक्ट के बारे में त्रुटि संदेश तत्काल नहीं किया जा रहा है (और हाँ, जब मैं इसके माध्यम से कदम उठाता था तो यह शून्य था) स्ट्रिंग सेंटर = कॉम्बोबॉक्सकेंटर। चयन ITem.ToString(); // <- यह ठीक काम करता है –

8
if (comboBox1.DropDownStyle == DropDownStyle.DropDown || 
    comboBox1.DropDownStyle == DropDownStyle.Simple) 
{ 
    return comboBox1.Text; 
} 

Text शायद उपयोग करने वाला सबसे अच्छा है। यह एक स्ट्रिंग के रूप में कॉम्बोबॉक्स से वर्तमान में चयनित पाठ जो भी हो जाता है।

if (comboBox1.DropDownStyle == DropDownStyle.DropDownList) 
{ 
    return comboBox1.GetItemText(comboBox1.SelectedItem); 
} 

इस शैली के लिए, आप ComboBox से पाठ नहीं मिल सकता है। यह बदले में वर्तमान में SelectedIndex पर आइटम से स्ट्रिंग देता है।

0

SelectedItem की जाँच एक सुरक्षित विकल्प हो रहा है।

NRBQConsts.currentSiteNum = listBoxSitesWithFetchedData.SelectedValue.ToString(); 

... जो एक एनआरई के साथ दुर्घटनाग्रस्त हो गया:

मैं इस कोड था।

यह करने के लिए इसे बदलने के बाद:

NRBQConsts.currentSiteNum = listBoxSitesWithFetchedData.SelectedItem.ToString(); 

... यह ठीक काम करता है।

1

यह 3 चीजें 1. मोड 2. DropDownStyle 3. आवश्यक मूल्य

ComboBox.SelectedIndexChanged

पर
  • अनबाउंड मोड

    एक पर निर्भर करता है। DropDownStyle = लटकती

    • SelectedItem वापस आ जाएगी = SelectedText
    • SelectedValue वापस आ जाएगी = ""
    • SelectedText वापस आ जाएगी = SelectedText

      ज।DropDownStyle = DropDownList

      • SelectedItem वापस आ जाएगी = SelectedText
      • SelectedValue = "" "लौटाएंगे
      • SelectedText वापस आ जाएगी ="
  • उपयोग डेटा बाउंड मोड (मतलब आप अपने कॉम्बोबॉक्स को कुछ डेटा स्रोत यानी SQL सर्वर तालिका से पॉप्युलेट कर रहे हैं) आप तालिका के कॉलम का चयन करेंगे DisplayMember और वैल्यूमम्बर के समान या अन्य कॉलम।

    ए। DropDownStyle = लटकती

    • SelectedItem वापस आ जाएगी = System.Data.DataRowView (शीघ्र)
    • SelectedValue वापस आ जाएगी = ValuMemeber
    • का मूल्य
    • SelectedText वापस आ जाएगी = SelectedText (DisplayMember का मूल्य)

      ख । DropDownStyle = DropDownList

      • .SelectedItem वापस आ जाएगी = System.Data.DataRowView (शीघ्र)
      • .SelectedValue वापस आ जाएगी = ValueMember का मूल्य
      • .SelectedText वापस आ जाएगी = ""

नोट: आप भी उपयोग कर सकते हैं। टेक्स्ट जो वापस आएगा = कॉम्बोबॉक्स

012 का पाठ

निष्कर्ष:

  1. Unboud मोड

    • .SelectedItem सबसे अच्छा विकल्प
  2. डाटा बाउंड मोड

    एक है। ValueMember आवश्यक है

    • .SelectedValue सबसे अच्छा विकल्प

      ख है। DisplayMember आवश्यक है

      • .text सबसे अच्छा विकल्प