2010-02-18 5 views
7

गैर-चयन योग्य वस्तुओं के साथ combobox नियंत्रण कैसे बनाएं? उदाहरण के लिए, ऐसे समूह नाम या श्रेणी नाम जो कुछ समूहों या श्रेणियों में ड्रॉपडाउन सूची में वस्तुओं को विभाजित करते हैं।गैर-चयन योग्य वस्तुओं के साथ WinForms कॉम्बोबॉक्स बनाएं

+0

विनफॉर्म या वेबफॉर्म? –

+0

आप थोड़ा और विवरण दे सकते हैं। क्या यह डब्ल्यूपीएफ, विंडोज फॉर्म या कुछ अन्य यूआई ढांचा है? – mattythomas2000

उत्तर

12

अपने combobox में स्ट्रिंग जोड़ने के बजाय आप एक विशेष कक्षा जोड़ सकते हैं और यह निर्धारित करने के लिए चयनित आइटम का उपयोग कर सकते हैं कि आइटम चुना गया है या नहीं।

public partial class Form1 : Form 
{ 
    private class ComboBoxItem 
    { 
     public int Value { get; set; } 
     public string Text { get; set; } 
     public bool Selectable { get; set; } 
    } 

    public Form1() { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) { 
     this.comboBox1.ValueMember = "Value"; 
     this.comboBox1.DisplayMember = "Text"; 
     this.comboBox1.Items.AddRange(new[] { 
      new ComboBoxItem() { Selectable = false, Text="Unselectable", Value=0}, 
      new ComboBoxItem() { Selectable = true, Text="Selectable1", Value=1}, 
      new ComboBoxItem() { Selectable = true, Text="Selectable2", Value=2}, 
      new ComboBoxItem() { Selectable = false, Text="Unselectable", Value=3}, 
      new ComboBoxItem() { Selectable = true, Text="Selectable3", Value=4}, 
      new ComboBoxItem() { Selectable = true, Text="Selectable4", Value=5}, 
     }); 

     this.comboBox1.SelectedIndexChanged += (cbSender, cbe) => { 
      var cb = cbSender as ComboBox; 

      if (cb.SelectedItem != null && cb.SelectedItem is ComboBoxItem && ((ComboBoxItem) cb.SelectedItem).Selectable == false) { 
       // deselect item 
       cb.SelectedIndex = -1; 
      } 
     }; 
    } 
} 
+0

यह मेरा पहला विचार भी था। हालांकि आप अभी भी कॉम्बोबॉक्स में आइटम टेक्स्ट टाइप कर सकते हैं और इस तरह अचयनित आइटम का चयन कर सकते हैं। –

+1

नहीं। मेरे मामले में मैं कॉम्बोबॉक्स को टेक्स्टडिटर को अक्षम करने के लिए ड्रॉपडाउनलिस्ट शैली का उपयोग करता हूं। – symantis

+0

आपका कोड बहुत अच्छा है और यह मेरे लिए मदद करता है। लेकिन एक और सवाल - न केवल सूची में वस्तुओं का चयन कैसे अक्षम करें बल्कि माउस द्वारा गैर-चयन योग्य वस्तुओं को ट्रैक करना अक्षम करें। – symantis

0

एक केवल पढ़ने के लिए कॉम्बो बॉक्स के लिए CodeProject पर यहाँ एक नज़र, यहाँ एक अन्य लेख बनाने के लिए है readonly कॉम्बो बॉक्स 'सभ्य' की तलाश में ... यहाँ एक और पता चलता है कि कैसे बुनियादी मानक कॉम्बो बॉक्स ओवरराइड करने के लिए इसे बनाने के लिए है सनी के सुझाव के अनुसार readonly