我有一个带有listview控件的窗体。我将MultiSelect属性设置为true,并添加了selected_index更改的事件。
当我点击与当前所选索引相同的索引时,我触发了事件。 我的期望是我不会被解雇。奇怪的是,点击索引后事件发生了1秒。
我感谢任何回复解释为什么会这样。
编辑:
示例代码:
private void Form1_Load(object sender, EventArgs e)
{
listView1.View = View.Details;
listView1.MultiSelect = true;
listView1.FullRowSelect = true;
listView1.Columns.Add("Number");
listView1.Items.Add("1");
listView1.Items.Add("2");
listView1.Items.Add("3");
listView1.Items.Add("4");
}
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listView1.SelectedItems.Count > 0)
{
MessageBox.Show("Selected Index Changed event fired: ");
}
}
请按照以下步骤查看问题:
尝试选择一个项目,例如:选择数字3
预期结果:listview1_SelectedIndexChanged被触发
结果:被解雇。
尝试再次点击数字3。
预期结果:未触发listview1_SelectedIndexChanged
结果:一秒延迟就会被解雇。
答案 0 :(得分:0)
来自ListView.SelectedIndexChangedEvent:
上的MSDN文档在多选ListView控件中,只要删除项目或将其添加到所选项目列表中,就会发生此事件。要确定在ListView控件中选择了哪些项,请使用SelectedItems属性访问ListView.SelectedListViewItemCollection。
至于为什么这个事件等了很长时间才开始:我只能想象处理器被捆绑了做其他事情。你有更多关于你所看到的细节吗(样本代码会有帮助吗?)