2011-02-27 17 views
8
int[] arr = int[100]; 
listBox1.DataSource = arr; 
void ComboBox1SelectedIndexChanged(object sender, EventArgs e) 
{ 
    .....//some processes 
    listBox1.DataSource = null; 
    listBox1.DataSource = arr; 
} 

is not working, 

भी,लिस्टबॉक्स ताज़ा() ग #

listBox1.Refresh(); is not working, 

भी

listBox1.Update(); is not working, 


मैं मैं BindingList<T> उपयोग कर सकते हैं पता है, लेकिन मैं केवल सरणी के साथ काम करना है।

क्या आप मेरी मदद कर सकते हैं मैं सूची बॉक्स को रीफ्रेश कैसे कर सकता हूं?

उत्तर

0

कोशिश निम्नलिखित

listBox1.DataBind() 
+0

यह शायद, .NET 3.5 और अधिक पर काम उदाहरण के लिए वहाँ .NET 2.0 – ocanal

+7

वहाँ पर ताज़ा करने के लिए एक रास्ता है .NET 4.0 – fnc12

0

उपयोग BeginUpdate और EndUpdate, कि इसे हल करना चाहिए। डेटा स्रोत दो बार

listBox1.BeginUpdate(); 

listBox1.DataSource = myList; 

listBox1.EndUpdate(); 
+0

में कोई डेटाबिंड() नहीं है, यह भी काम नहीं कर रहा है। – ocanal

1

ये लिंक मदद कर सकता है स्थापित करने के लिए कोई ज़रूरत नहीं।

मैं एक सूची बॉक्स आइटम (सी #) कैसे अपडेट कर सकता हूं? - - http://arstechnica.com/civis/viewtopic.php?f=20&t=554717

बाइंड ListBox को ArrayList http://www.java2s.com/Tutorial/CSharp/0460__GUI-Windows-Forms/BindArrayListtoListBox.htm

1

अच्छी तरह से, बंधन बिना मैं केवल के साथ प्रबंधित:

this.Hide(); 
this.Show(); 

यह सब कुछ redraws ...

2

बस के साथ क्या करना प्रबंधित
FirstListBox.DataContext = null; 
FirstListBox.DataContext = App.ViewModel; 

बस लिंक खो देता है और सभी डेटा को वापस प्राप्त कर लेता है।

0

मुझे ListBox विरासत मिला और RefreshItems() पर कॉल करने वाली एक सार्वजनिक विधि जो हम चाहते हैं उसे जोड़ती है। पहले ही लागू किया गया है और सब कुछ। मुझे नहीं पता कि उन्होंने सार्वजनिक विधि में क्यों नहीं रखा।

10

यहां स्टैक एक्सचेंज पर मेरा पहला जवाब।

सी # नेट 4.0:

listBox1.DataSource = null; 
listBox1.DataSource = names; 

मैंने देखा है कि पहली बार के लिए डेटा स्रोत की स्थापना, यह ताज़ा करता है। जब यह सेट हो, और आप इसे एक ही बार फिर से सेट करने का प्रयास करें, तो यह अपडेट नहीं होता है।

तो मैंने इसे शून्य बना दिया, इसे उसी पर सेट किया, और यह इस मुद्दे के साथ मेरे लिए सही ढंग से प्रदर्शित हुआ।

+1

यह स्वीकार्य उत्तर होना चाहिए। – Kehlan

1

समस्या सूचीबॉक्स चयन मोड से आ सकती है।

एक कारण के लिए जो मुझे नहीं पता, SeatabMode SelectionMode.None होने पर डेटाबेस काम नहीं करता है।

का संभावित हल हो सकता है:

listBox.SelectionMode = SelectionMode.MultiExtended; 
listBox.DataSource = myDatasource; 
listBox.SelectionMode = SelectionMode.None; 

आशा है कि यह मदद करता है।

+0

धन्यवाद - उम्र के लिए देखा, .. यह मेरी समस्या थी। माइक्रोसॉफ्ट वास्तव में चूसना –

0

विंडोज़ फॉर्म विशेष रूप से लिस्टबॉक्स और लोड पर समाप्त होने से पहले अन्य नियंत्रणों को देखने के लिए तैयार है, यह मुश्किल है। डेटा को लोड किए गए उपयोग के रूप में देखने के लिए अमान्य(); फिर अद्यतन();

2

लिस्टबॉक्स केवल उस सामग्री को अपडेट करता है जब डेटा पर बाध्य ऑब्जेक्ट स्रोत को अपने स्वयं के परिवर्तनों को नोटिस करता है। बाइंडिंगसोर्स ऑब्जेक्ट में DataSourceChanged नामक एक ईवेंट होता है। जब स्रोत किसी भिन्न ऑब्जेक्ट में बदल जाता है तो सूचीबॉक्स स्वयं अपडेट हो जाएगा। वही बात जब आप एक सूची बांधते हैं। यदि आप सूची बदलते हैं तो कुछ भी नहीं होगा, क्योंकि सूची यह सूचित नहीं करती है कि यह बदल दिया गया है। इस समस्या के लिए एक सरल समाधान है: बाइंडिंगलिस्ट http://msdn.microsoft.com/de-de/library/ms132679%28v=vs.110%29.aspx

बाइंडिंगलिस्ट में सूची बदलने पर ईवेंट चेंज किया गया ईवेंट हर बार कॉल किया जाता है (स्पष्ट रूप से)। तो Windows.Form ऑब्जेक्ट्स की डेटा बाइंडिंग ListChanged जैसी घटनाओं का उपयोग स्वयं को अपडेट करने के लिए करती है। एक साधारण सूची इस घटना का समर्थन नहीं करती है।

इसलिए यदि आप डाटा बाइंडिंग का एक बहुत आप के बारे में पता होना चाहिए के साथ काम करना चाहते हैं: http://msdn.microsoft.com/de-de/library/system.componentmodel.inotifypropertychanged%28v=vs.110%29.aspx

+0

लेकिन ऐसे पर्याप्त मामले हैं जहां आप मौजूदा बाइंडिंगलिस्ट को अपडेट नहीं करना चाहते हैं, लेकिन इसे किसी अन्य के साथ प्रतिस्थापित करें। फिर यह स्वचालित रूप से अपडेट नहीं होगा, क्योंकि डेटासोर्स अभी भी पुराने को इंगित करता है। – Binarian

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