我在处理
多选功能已禁用,所选项索引将始终为0。我的问题是,如果
编辑:我现在尝试的另一种方法是,不是取消选择列表框中的项目,而是清除列表框中的所有项目,然后重新创建它们。如果所有项目都被清除,则对话框不会再次弹出。 但是,如果立即重新创建项目,则同一项目将再次被选择,并且对话框仍然会第二次弹出。
ListView ItemSelectionChanged
事件时遇到了问题,会被调用两次。经过搜索,我发现这是因为当一个项目被选中和取消选中时,该事件会被调用两次。我只希望在选择项目时触发,而不是取消选择时。解决办法似乎是在事件开头加上 if(e.IsSelected)
,这样只有在选择项目时才会调用事件,但在我的情况下这种方法并没有奏效。下面是我的代码基本结构:private void SelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
{
if (e.IsSelected)
{
DialogResult GetDialogResult =
MessageBox.Show("Keep this item selected?",
"Keep Selected",
MessageBoxButtons.YesNo);
if (GetDialogResult == DialogResult.No)
listView1.SelectedItems[0].Selected = false;
}
}
多选功能已禁用,所选项索引将始终为0。我的问题是,如果
DialogResult
为“否”,我希望所选项目被取消选择,但是当单击“否”时,SelectionChanged
事件再次触发,并且e.IsSelected
显然仍然为真,因此对话框会再次弹出。我想这可能与第一个事件在取消所选项目时尚未完全执行完有关,但我不确定如何解决这个问题并使对话框只显示一次。 有什么建议吗?编辑:我现在尝试的另一种方法是,不是取消选择列表框中的项目,而是清除列表框中的所有项目,然后重新创建它们。如果所有项目都被清除,则对话框不会再次弹出。 但是,如果立即重新创建项目,则同一项目将再次被选择,并且对话框仍然会第二次弹出。