दिलचस्प पोस्ट
जावा बाइट सरणी में ऋणात्मक संख्याएं हैं साधारण राज्य मशीन सी # में उदाहरण है? अजगर: urllib2 कैसे urlopen अनुरोध के साथ कुकी भेजने के लिए जावा में भारित यादृच्छिकता क्क्कोर्ट बनाम हीप्सोर्ट मैं एंड्रॉइड नेविगेशन पट्टी की ऊँचाई और चौड़ाई प्रोग्राम कैसे प्राप्त करूं? एक कंबोडिया में आइटम समूहबद्ध करना मेरे आंशिक दृश्य के जावास्क्रिप्ट इनलाइन में एनजी-स्कोप क्यों जोड़ा गया है और सचेत काम नहीं कर रहा है? क्या ब्रैकेट के बिना I-statement का उपयोग करने के लिए बुरा अभ्यास है? VB.NET में यादृच्छिक पूर्णांक डिफ़ॉल्ट लॉक स्क्रीन पर एंड्रॉइड गतिविधि विभिन्न मूल्य प्रकारों के बीच विभाजन-शून्य-शून्य व्यवहार में असंगति WPF के लिए विंडोज 7 थीम? सी # कैसे जारी रखने से पहले लोड करने के लिए एक वेबपेज के लिए इंतजार करना 2 जेसन ऑब्जेक्ट्स की तुलना करें

सी # WinForms में एक ListBox के DataSource को रीफ्रेश कैसे करें

प्रपत्र में एक कम्बोबोक्स और एक लिस्टबॉक्स है जब "जोड़ें" बटन क्लिक किया जाता है, तो मैं कॉम्बो बॉक्स से लिस्ट बॉक्स में चयनित आइटम जोड़ना चाहता हूं।

public partial class MyForm:Form { List<MyData> data = new List<MyData>(); private void ShowData() { listBox1.DataSource = data; listBox1.DisplayMember = "Name"; listBox1.ValueMember = "Id"; } private void buttonAddData_Click(object sender, EventArgs e) { var selection = (MyData)comboBox1.SelectedItem; data.Add(selection); ShowData(); } } 

इस उदाहरण के साथ, चयनित आइटम को सूचीबॉक्स के अंदर नए चयन के साथ बदल दिया गया है। मुझे सूची में आइटम जोड़ने की आवश्यकता है I

मेरे कोड में क्या गलत है?

धन्यवाद।

Solutions Collecting From Web of "सी # WinForms में एक ListBox के DataSource को रीफ्रेश कैसे करें"

listbox1.DataSource संपत्ति मान में परिवर्तन के लिए दिखती है लेकिन एक ही सूची को हर बार मान वास्तव में नहीं बदलेगा निर्दिष्ट करके।

आप स्वचालित रूप से नई वस्तुओं को पहचानने के लिए अपनी List<T> बजाय एक BindingList<T> List<T> उपयोग कर सकते हैं। आपके ShowData () विधि को स्टार्टअप पर एक बार कहा जाना चाहिए।

 public partial class MyForm:Form { public MyForm(){ InitializeComponent(); ShowData(); } BindingList<MyData> data = new BindingList<MyData>(); private void ShowData() { listBox1.DataSource = data; listBox1.DisplayMember = "Name"; listBox1.ValueMember = "Id"; } private void buttonAddData_Click(object sender, EventArgs e) { var selection = (MyData)comboBox1.SelectedItem; data.Add(selection); } } 

मैं BindingSource का उपयोग करने का सुझाव BindingSource क्योंकि यह कनेक्ट नियंत्रण को ठीक से अपडेट करेगा I

 public partial class MyForm : Form { List<MyData> data = new List<MyData>(); BindingSource bs = new BindingSource(); public MyForm() { IntializeComponents(); bs.DataSource = data; listBox1.DisplayMember = "Name"; listBox1.ValueMember = "Id"; listBox1.DataSource = bs; } private void buttonAddData_Click(object sender, EventArgs e) { var selection = (MyData)comboBox1.SelectedItem; data.Add(selection); bs.ResetBindings(false); } } 

मक्खी पर नियंत्रण डेटा स्रोत बदलने से कुछ समय अजीब परिणाम उत्पन्न होता है।

सूचीबन्द पता नहीं लगा कि आपने DataSource बदल दिया है। यह केवल तभी ताज़ा होगा जब Datasource बदल गया है, इसलिए DataSource को पहले रिक्त करने के लिए सेट करें:

  listBox1.DataSource = null; listBox1.DataSource = data; 

आप वस्तुओं को फिर भी साफ़ कर सकते हैं फिर डाटासर्स को फिर से सेट कर सकते हैं:

 listBox1.Items.Clear(); listBox1.DataSource = data; 

वैकल्पिक रूप से और संभवत: इसका कार्यान्वयन करने का सबसे सही तरीका प्रदान की गई ObservableCollection<T> का उपयोग करना है। यह INotifyCollectionChanged को लागू करने के एकमात्र उद्देश्य के साथ बनाया गया है।

 public partial class MyForm : Form { ObservableCollection<MyData> data = new ObservableCollection<MyData>(); public MyForm() { listBox1.DataSource = data; listBox1.DisplayMember = "Name"; listBox1.ValueMember = "Id"; } private void buttonAddData_Click(object sender, EventArgs e) { var selection = (MyData)comboBox1.SelectedItem; data.Add(selection); } } 

क्योंकि ObservableCollection<T> लागू करता है INotifyCollectionChanged बाइंडिंग स्वचालित रूप से जब भी आपके डेटा बदलता है ListBox अद्यतन करेगा

कॉल ShowData() कॉल करें जब प्रपत्र ShowData() पर आपके सूचीबॉक्टल को पॉप्युलेट करने के लिए आरंभ होता है

  public Department() { InitializeComponent(); ShowData(); } 

ShowData() विधि, जहां BindingSource , DisplayMember और ValueMember सेट कर रहे हैं

 private void ShowData() { using (var uow = new UnitOfWork(new SellContext())) { listBox1.DataSource = uow.Departments.GetAll().ToList(); listBox1.DisplayMember = "DepartmentName"; listBox1.ValueMember = "DepartmentId"; //listBox1.Invalidate(); } } 

नीचे दिए गए कार्यान्वयन में जब एक विभाग को डेटाबेस से हटा दिया जाता है, तो वर्तमान संग्रह के साथ सूचीबैक रिफ्रेश होता है

 private void button1_Click(object sender, EventArgs e) { try { using (var uow = new UnitOfWork(new SellContext())) { int count = uow.Departments.FindDepartmentByName(txtDeptName.Text.ToString()); if (count>0) { MessageBox.Show("This Department Already Exists", "SellRight", MessageBoxButtons.OK, MessageBoxIcon.Hand); } else { department dept = new department(); dept.DepartmentName = txtDeptName.Text.ToString(); uow.Departments.Create(dept); if (uow.Complete() > 0) { MessageBox.Show("New Department Created", "SellRight", MessageBoxButtons.OK, MessageBoxIcon.Information); txtDeptName.Text = ""; ShowData(); } else { MessageBox.Show("Unable to add Department", "SellRight", MessageBoxButtons.OK, MessageBoxIcon.Error); txtDeptName.Text = ""; ShowData(); } } } } catch(Exception ex) { ex.ToString(); } }