Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# customCheckedListBox CheckedChanged_C#_Winforms_Checkedlistbox - Fatal编程技术网

C# customCheckedListBox CheckedChanged

C# customCheckedListBox CheckedChanged,c#,winforms,checkedlistbox,C#,Winforms,Checkedlistbox,我制作了customCheckedListBox,我想用它来过滤带有mulitselect选项的dataGridView。我希望能够捕获CheckedListBox CheckedChange状态,但CheckedListBox仅支持ItemCheck事件 这是我的密码: private void customCheckedListBox1_ItemCheck(object sender, ItemCheckEventArgs e) { FilterDataGrid(); } priva

我制作了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事件只能处理一个选项,所以即使用户决定选择多个选项,它也只会显示第一个选择的项目。我想CheckedChanged事件在我的情况下可以工作,但是当调用ItemCheck事件时,还没有CheckedItems。ItemCheck事件完成后,它们将被检查。所以当它进入FilterDataGrid CheckedChanged内部时,计数等于0


我的问题是如何处理CheckedListBox中的CheckedChanged事件。我希望我没有把事情搞砸。如果有任何问题,请告诉我,我会尝试解释更多。

我使用foreach循环解决了这个问题,就像KingKing建议的那样,并将它放在MouseLeave事件中


循环遍历所有项并检查Checked属性。好的,我是这样做的。现在我来检查一下是否一切正常。
private void customCheckedListBox1_MouseLeave(object sender, EventArgs e)
{
    foreach (string itemChecked in customCheckedListBox1.CheckedItems)
    {
        CheckedList.Add(itemChecked);
    }
    FilterDataGrid();
}