WinForms:ItemCheck事件在某些项目上触发两次

时间:2019-01-05 16:31:03

标签: c# winforms

我正在从数据库加载项目,并且在加载项目时,我设置了一个标志,该标志可以在加载完成后停止触发事件,事件可以触发并且应该触发。现在,当我尝试检查未选中的项目时,它将相应地更改它的组。但是,当我删除从db加载为(已完成)的项目的复选标记时,该事件将触发两次,并且不会发生任何事情: enter image description here

要澄清一下,当我选中带有红色标记的那一项效果很好,但是当我取消选中带有黄色标记的那项无效时,就是这样。

我的代码:

private void tasksListView_ItemCheck(object sender, ItemCheckEventArgs e)
{
    if (dontRunHandler) return;
    int itemIndex = e.Index;
    Action ChangeGroup = () =>
    {
        int projId = selectedProjectId;
        var currentItem = tasksListView.Items[itemIndex];
        tasks[projId][itemIndex].state ^= true;
        int group = (tasks[projId][itemIndex].state) ? 1 : 0; // Group 0 = Todo and Group 1 = Complete
        currentItem.Group = tasksListView.Groups[group];
    };

    tasksListView.BeginInvoke(ChangeGroup);
}

0 个答案:

没有答案