0

DataGridViewComboCell であるセルがある DataGridView があります。各 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();          
4

1 に答える 1

1

注意/確認すべき点がいくつかあります。

1) Refresh 後に EndEdit を呼び出す必要はありません。呼び出す必要がある場合は、Refresh の前に呼び出す必要があります。

2) コンボボックスの DropDownStyle が DropDown の場合、これは予想される動作です。

MSDN ドキュメントから:

DropDownStyle プロパティを DropDown に設定すると、ComboBox の編集可能領域に任意の値を入力できます。

これを変更するには、DropDownStyle を DropDownList に変更するか、項目を削除した後にコード内の値を手動でクリアします。

于 2012-01-04T03:57:32.403 に答える