2012-05-17 12 views
6

सी # WinForms अनुमति देते हैं नहीं करता है के बाद: DropDownStyle:: ड्रॉपडाउन AutoCompleteSource: ListItems AutoCompleteMode: मैं इन गुणों के साथ एक Combobox इस्तेमाल किया तो अब SuggestAppendएक स्वत: पूर्ण बता गया कि कस्टम पाठ

जब मैं बता गया में टाइप यह, वस्तुओं की सूची से आइटम सुझाता है। अच्छा। लेकिन मुद्दा यह है कि मैं जो कुछ भी चाहता हूं उसे टाइप करने में सक्षम नहीं होना चाहता, मैं बस अपनी सूची में मौजूद मान्य वस्तुओं से टाइप करने में सक्षम होना चाहता हूं। मैं इस भाग को कैसे ठीक कर सकता हूं?

धन्यवाद।

उत्तर

5

आप आइटम अपने मूल्यों (या तो स्वयं या डेटा बाइंडिंग के माध्यम से) के साथ सूची को भरने के लिए है, और फिर DropDownStyle सेट DropDownList लिए चाहते हैं।

कम्बोबॉक्स टेक्स्टबॉक्स की तरह नहीं दिखेगा, लेकिन जब यह ध्यान केंद्रित करेगा, तो इसमें टाइप करने से आइटम सूची से सबसे अच्छा मिलान स्वतः-चयन होगा।

(यह एक Combobox स्थापित करने के लिए कस्टम पाठ की अनुमति नहीं करने के लिए सिफारिश की तरीका है।)

वैकल्पिक रूप से, अगर आप शैली लटकती होना चाहते हैं, नियंत्रण की KeyPress घटना पर कब्जा है, और एक त्वरित जांच करें नियंत्रण के पाठ के साथ e.KeyChar, और यदि यह सूची में नहीं मिलता है, तो e.Handled = True सेट करें। यह सभी कीप्रेस को अवरुद्ध कर देगा जिसके परिणामस्वरूप एक शब्द होगा जो सूची में नहीं है।

+1

धन्यवाद लेकिन यह काम नहीं करता है। हां यह हमें जो कुछ भी पसंद है उसे टाइप करने से रोक देगा लेकिन यह स्वत: पूर्णता को तोड़ देता है। फिर भी हम टाइप कर सकते हैं लेकिन हमेशा यह पूरी सूची दिखाएगा और उन्हें फ़िल्टर नहीं करेगा। – Bohn

+0

एक और समाधान जोड़ा गया। – MCattle

+0

अच्छी चाल, अब इसे आजमाएंगी। – Bohn

0

कॉम्बो बॉक्स नियंत्रण सीधे इसका समर्थन नहीं करता है।

आपको यह सत्यापित करने के लिए हैंडलर लिखना होगा कि सूची में से कोई आइटम दर्ज किया गया है, और यदि उपयोगकर्ता नहीं है तो उसे संकेत दें।

0

यह बिल्कुल ऑटो पूर्ण नहीं है, लेकिन यदि आप DropDownStyle को DropDownList पर सेट करते हैं, तो यह केवल आइटम संग्रह में प्रविष्टियों की अनुमति देगा। हालांकि, इस मोड का डिफ़ॉल्ट व्यवहार यह है कि आपके द्वारा लिखे गए प्रत्येक अक्षर उस पत्र से शुरू होने वाले पहले मैच में कूदते हैं। इसलिए, यदि आप उन्हें पहले अक्षर से अतिरिक्त वर्ण टाइप करना जारी रखना चाहते हैं, तो आप AutoCompleteSource को ListItems पर सेट कर सकते हैं और फिर AutoCompleteMode को संलग्न करने के लिए सेट कर सकते हैं।

0

अन्य विकल्प TextChanged या TextUpdated ईवेंट पर पंजीकरण कर रहा है और यदि पहले से टाइप किए गए टेक्स्ट आपको शर्तों के अनुरूप नहीं हैं, तो इसे उचित रूप से बदलें।

1

यह काम करता है कॉम्बो बॉक्स में तारों के साथ यह मेल करता है।

int index = combobox1.FindString(combobox1.Text); 
    if (index < 0) 
    { 
    MessageBox.Show("Invalid Record"); 
    combobox1.Focus(); 
    return; 
    } 
संबंधित मुद्दे