我正在从数据库加载项目,并且在加载项目时,我设置了一个标志,该标志可以在加载完成后停止触发事件,事件可以触发并且应该触发。现在,当我尝试检查未选中的项目时,它将相应地更改它的组。但是,当我删除从db加载为(已完成)的项目的复选标记时,该事件将触发两次,并且不会发生任何事情:
要澄清一下,当我选中带有红色标记的那一项效果很好,但是当我取消选中带有黄色标记的那项无效时,就是这样。
我的代码:
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);
}