我已制作customCheckedListBox
,我想用它来使用mulitselect选项过滤dataGridView
。我希望能够捕获CheckedListBox
CheckedChange
州,但CheckedListBox
仅支持ItemCheck
事件。
这是我的代码:
private void customCheckedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
FilterDataGrid();
}
private void FilterDataGrid()
{
var list4 = customCheckedListBox1.SelectedItems.Cast<string>().ToList();
if (customCheckedListBox1.SelectedItems.Count != 0)
{
var result = list3.Where(Srodek => list4.Any(x => x == Srodek.Srodek.category1));
DataTable ListAsDataTable3 = BuildDataTable2<CalaLinijka>(result);
DataView ListAsDataView3 = ListAsDataTable3.DefaultView;
dataGridView4.DataSource = view = ListAsDataView3;
}
}
问题是ItemCheck
事件只能处理一个选项,所以即使用户决定选择多个opiton,它也只会显示第一个选定的项目。我想CheckedChanged
事件在我的情况下会起作用,但是当调用ItemCheck
事件时,还没有CheckedItems
。他们成为&#34; Checked&#34; ItemCheck
事件结束后。因此当它进入FilterDataGrid
CheckedChanged.Count
时等于0。
我的问题是如何处理CheckedChanged
中的CheckedListBox
事件。我希望我没有太多搞砸了。如果有任何问题,请告诉我,我会尝试更多。
答案 0 :(得分:0)
我通过使用foreach循环解决了这个问题(就像KingKing建议的那样)并将其放在MouseLeave
事件中。
private void customCheckedListBox1_MouseLeave(object sender, EventArgs e)
{
foreach (string itemChecked in customCheckedListBox1.CheckedItems)
{
CheckedList.Add(itemChecked);
}
FilterDataGrid();
}