2010-06-25 12 views
15

मैं ड्रॉपडाउन सूची नियंत्रण के लिए खरीदारी कर रहा हूं जो मुझे कई आइटम चुनने की अनुमति देता है। चेकड लिस्टबॉक्स के समान कुछ, लेकिन ड्रॉपडाउन सूची फॉर्म में (मैं नहीं चाहता कि यह स्क्रीन का एक बड़ा हिस्सा ले ले)। इस बिंदु पर मुझे बहुत आश्वस्त है कि .NET में अंतर्निहित ऐसा कोई नियंत्रण नहीं है।विनफॉर्म - बहु चयन ड्रॉपडाउन सूची

नोट यह Winforms है, एएसपी.NET नहीं। कोई सुझाव?

+4

नियंत्रण जिम भेड़ का बच्चा (http://www.codeproject.com/KB/combobox/extending_combobox.aspx) ने उल्लेख का उपयोग करें, लेकिन यह सुधार लागू करके इसे ठीक http://www.codeproject.com/KB/miscctrl/simplepopup.aspx फ़ोरम में "पॉपअपकंबोबॉक्स के साथ फोकस समस्या के लिए फिक्स" शीर्षक से: "Popupcombobox.cs' में 'BeginDropDown()' को BeginInvoke के साथ प्रतिस्थापित करें (नया MethodInvoker (ShowDropDown)); विधि में 'सुरक्षित ओवरराइड शून्य WndProc (रेफ संदेश एम) '। इसने मेरे लिए ध्यान केंद्रित किया, अब तक यह अच्छा लगता है। – Christian

उत्तर

21

CodeProject पर इस परियोजना की जाँच करें:

+0

गंभीरता से? चीज़। यह वही है जो मुझे चाहिए - मेरी इच्छा है कि मैंने इसे 24 घंटे पहले पोस्ट किया था! कुडोस। – AlanR

+2

अंत में मैंने इस चेकबॉक्स पर छोड़ दिया - यह पहली बार सोचा नहीं गया है (माउस क्लिक, ऑटो-पूर्ण, आदि को पहचानने के मामले में)। मैं एक पॉप अप संवाद बॉक्स का उपयोग करने के लिए बस गया। फिर भी, यह जानना निश्चित रूप से लायक है। – AlanR

7

वहाँ अभी तक एक और ठीक है:

ऊपर समाधान पहला मुद्दा है, जहां यह दो क्लिक आवश्यक ठीक करने के लिए सही है चेकबॉक्स की सूची में प्रवेश करने के लिए, हालांकि, जब आप इसे बाहर निकलने के लिए नियंत्रण पर क्लिक करते हैं तो यह एक नया मुद्दा प्रस्तुत करता है, यह फोकस बरकरार रखता है और आपको दूसरे नियंत्रण पर जाने के लिए डबल क्लिक करना होगा।

CheckBoxComboBox.cs में निम्नलिखित ओवरराइड जोड़ें:: मैं निम्न कोड के साथ इसे ठीक करने में सक्षम था रोब पी और इस जवाब से जवाब के साथ

protected override void OnClick(EventArgs e) 
    { 
     base.OnClick(e); 
     this.Parent.Focus(); 
    } 

, यह या तो क्लिक पर ध्यान केंद्रित करने और नहीं पाए जाएंगे घटना।

+0

फिर भी एक और फिक्स। जैसा कि बल्ले से हल किया गया है। हालांकि यह एक हैक है लेकिन एक की जरूरत है। क्योंकि ड्रॉपडाउन खोलने के अलावा आपका समाधान अच्छा करता है – Sami

1

आपको ड्रॉपडाउन फॉर्म फिर से दिखाना चाहिए, क्योंकि नीचे दिया गया कोड इसे बंद कर देता है।

कोड है कि काम करता है:

protected override void OnClick(EventArgs e) 
    { 
     base.OnClick(e); 
     this.Parent.Focus(); 
     this.dropdown.Show(this); 
    } 
संबंधित मुद्दे