2017-12-12 133 views
7

मेरे पास System.Windows.Forms.Listbox है और मैंने बनाए गए टुपल प्रकार मानों का संग्रह किया है। वह है, the new tuple type introduced in C# 7.0। मैं संग्रह को Listbox पर बांधने की कोशिश कर रहा हूं और DisplayMember को टुपल के तत्वों में से एक पर सेट कर रहा हूं। यहां एक उदाहरण दिया गया है:मैं System.Windows.Forms.Listbox पर सी # 7.0 टुपल प्रकार मानों का संग्रह कैसे बांध सकता हूं और डिस्प्ले सदस्य को तत्वों में से एक पर सेट कर सकता हूं?

var l = new List<(string name, int ID)>() 
{ 
    ("Bob", 1), 
    ("Mary", 2), 
    ("Beth", 3) 
}; 

listBox1.DataSource = l; 
listBox1.DisplayMember = "name"; 

हालांकि यह काम नहीं करता है। पुराने शैली के साथ Tuple<T> आप माना जाता है कि क्या in this answer वर्णित कर सकता है:

listBox1.DisplayMember = "Item1"; 
listBox1.ValueMember = "Item3"; // optional 

या तो काम नहीं करता है। यहाँ है कि मैं क्या दोनों ही मामलों में दिखाई दे रही है है:

enter image description here

मैं यह कैसे पूरा कर सकते हैं?

उत्तर

7

इवान का जवाब, निश्चित रूप से मामले का वर्णन करता है। स्पष्टीकरण, इवान के लिए

private void listBox1_Format(object sender, ListControlConvertEventArgs e) 
{ 
    e.Value = (((string name, int ID))e.ListItem).name; 
} 
+0

धन्यवाद, यह एक चालाक काम है। –

8

दुर्भाग्य से सी # 7 मूल्य tuples, बंधन, क्योंकि वे fields का उपयोग डेटा के लिए इस्तेमाल नहीं किया जा सकता है, जबकि विण्डोज़ फॉर्म्स मानक डेटा केवल गुण साथ काम करता है बंधन।

+0

धन्यवाद: समाधान के लिए आप name दायर दिखाने के लिए ListBox की Format घटना का उपयोग कर सकते हैं। –

संबंधित मुद्दे

 संबंधित मुद्दे