2012-01-03 21 views
0

DataGridViewには、DataGridViewComboCellというセルがあるところがあります。各DataGridViewComboCellは、BindingListの一意のコピーにバインドされています。バインディングリストからアイテムを削除すると、コンボボックスはバインディングリストから削除したエントリを削除します。
しかし、その値が選択されている場合、セル内の選択された項目としてとどまります。BindingListから項目を削除しても、DataGridViewComboBoxCellが更新されない

私はdatagridview.refresh()をやってみましたが、それでも助けにはなりませんでした。あなたが最新の情報に更新した後、EndEditを呼び出す必要はありません

1):ツールストリップのメニュー項目

// _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

正しいイベントでバインディングを移動したり変更したりしていますか?あなたが使用しているコードをペーストできますか?またdatagridview.Bind()またはバインディングは何かのように聞こえる...あなたのコードを見ることなくここに推測する – MethodMan

+0

BindingListをコンボボックスの列にバインドする方法を示すことはできますか? dataGridView1は仮想モードですか? – Kimberly

答えて

1

物事のカップルを見て/注意するから呼び出さなっています。呼び出す必要がある場合は、Refreshの前に呼び出す必要があります。

2)あなたのコンボボックスにDropDownStyleのDropDownがある場合、これは予想される動作です。 MSDN documentationから

がドロップダウンにDropDownStyleプロパティを設定する場合は、コンボボックスの編集可能領域に任意の値を入力することができます。

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

関連する問題