从BindingList中删除项不会刷新DataGridViewComboBoxCell

时间:2012-01-03 22:31:59

标签: c# winforms datagridviewcomboboxcell

我有一个DataGridView,其中有一个DataGridViewComboCell的单元格。每个DataGridViewComboCell都绑定到BindingList的唯一副本。当我从绑定列表中删除项目时,组合框会删除我从绑定列表中删除的条目 但是,如果选择该值,则它将作为单元格中的选定项目保留。

我尝试过做一个datagridview.refresh(),但它仍然没有帮助。它是从工具条菜单项

调用的
  // _contractLists is List<BindingList<String>> which is the datasource for a datagridviewcombobox

List<String> removedList = new List<string>();
_contractSelForm.ShowDialog();
_contractSelForm.GetandClearRemovedContracts(ref removedList);

foreach (BindingList<String> contractList in _contractLists)
{
     // remove deleted favorites
    foreach (string contract_name in removedList)
    {
         contractList.Remove(contract_name);
    }
}  

dataGridView1.Refresh();
dataGridView1.EndEdit();          

1 个答案:

答案 0 :(得分:1)

需要注意/注意的事情:

1)刷新后你不需要调用EndEdit。如果需要调用,则应在刷新之前调用它。

2)如果你的组合框有DropDown的DropDownStyle,那么这是预期的行为。

来自MSDN documentation

  

如果将DropDownStyle属性设置为DropDown,则可以在ComboBox的可编辑区域中键入任何值。

要更改此设置,请将DropDownStyle更改为DropDownList,或在删除项目后手动清除代码中的值。