列表视图选定的索引在多选列表视图中更改

时间:2010-05-21 21:52:42

标签: c#

我有一个带有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: ");
    }
}

请按照以下步骤查看问题:

  1. 尝试选择一个项目,例如:选择数字3

    预期结果:listview1_SelectedIndexChanged被触发

    结果:被解雇。

  2. 尝试再次点击数字3。

    预期结果:未触发listview1_SelectedIndexChanged

    结果:一秒延迟就会被解雇。

1 个答案:

答案 0 :(得分:0)

来自ListView.SelectedIndexChangedEvent:

上的MSDN文档
  

在多选ListView控件中,只要删除项目或将其添加到所选项目列表中,就会发生此事件。要确定在ListView控件中选择了哪些项,请使用SelectedItems属性访问ListView.SelectedListViewItemCollection。

至于为什么这个事件等了很长时间才开始:我只能想象处理器被捆绑了做其他事情。你有更多关于你所看到的细节吗(样本代码会有帮助吗?)