我遇到了与这个问题几乎相同的情况:C# Update combobox bound to generic list。然而,我试图更改显示的字符串;而不是添加、删除或排序。我尝试了引用问题中提供的BindingList解决方案,但没有帮助。我可以看到当我编辑项目时,combobox的DataSource属性正确更新,但是combobox中显示的内容并不是DataSource属性中的内容。我的代码如下:
当我尝试更新内容时,我会按照以下步骤操作:
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";
...
当我尝试更新内容时,我会按照以下步骤操作:
int idx = SearchComboBox.SelectedIndex;
mBindingList[idx].Display = value;
SearchComboBox.Refresh();
编辑:
RefreshItems 似乎是一个私有方法。我只得到了错误信息:
"'System.Windows.Forms.ListControl.RefreshItems()' 因其保护级别而无法访问"
ResetBindings 没有效果。