Sto avendo praticamente lo stesso problema come questo:Aggiornamento di un ComboBox databound
C# Update combobox bound to generic list
Tuttavia, sto cercando di cambiare le stringhe mostrate; non aggiungere, rimuovere o ordinare. Ho provato la soluzione BindingList fornita nella domanda di riferimento, ma non ha aiutato. Riesco a vedere la proprietà DataSource della combobox correttamente aggiornata mentre modifica gli elementi, ma i contenuti visualizzati nella casella combinata non sono quelli nella proprietà DataSource.
il mio codice è il seguente:
mSearchComboData = new List<SearchData>();
mSearchComboData.Add(new SearchData("", StringTable.PatientID));
mSearchComboData.Add(new SearchData("", StringTable.LastName));
mSearchComboData.Add(new SearchData("", StringTable.LastPhysician));
mSearchComboData.Add(new SearchData("", StringTable.LastExamDate));
mBindingList = new BindingList<SearchData>(mSearchComboData);
SearchComboBox.Items.Clear();
SearchComboBox.DataSource = mBindingList;
SearchComboBox.ValueMember = "Value";
SearchComboBox.DisplayMember = "Display";
...
Quando provo ad aggiornare il contenuto faccio la seguente:
int idx = SearchComboBox.SelectedIndex;
mBindingList[idx].Display = value;
SearchComboBox.Refresh();
EDIT ::
RefreshItems sembra essere un metodo privato . Ho appena ottenere il messaggio di errore:
" 'System.Windows.Forms.ListControl.RefreshItems()' è inaccessibile a causa del livello di protezione"
ResetBindings non ha alcun effetto.
avevo provato circa 13 metodi diversi per ottenere la casella combinata sulla mia forma di aggiornare, poi finalmente trovato questa soluzione. Ben scritto, e ha funzionato come un fascino. Grazie! –