C# : How do I get the actual item clicked from SelectedIndexChanged for a ListView control?

标签 c# winforms multithreading

我正在使用具有 listView 的 winForms 应用程序。该 listView 启用了多选,我在列表中有很多很多项目(在行 View 中)。

当我选择最后一行(即项目),然后按住 Shift 键并单击第 5000 行时,SelectedIndexChanged 会触发 5000 次。如果发生这种情况,我将陷入一个非常讨厌的循环。单击的最后一行不能保证是“SelectedItems”列表中的最后一项。我如何获得实际项目的点击?

编辑:更好的说明:我如何得到导致 SelectedIndexChanged 事件的这个特定迭代的 ListViewItem? ...即使我必须检查所有 5000 个。我需要知道我在看哪一个。 EventArgs 没有索引属性,发送方是 ListView,而不是 ListViewItem。

有什么想法吗?

最佳答案

哦,看在 PETE 的份上...(* 感觉比石头还笨 *)

我找到了答案。请注意,我使用的是 SelectedIndexChanged。我应该一直在使用另一个事件:ItemSelectionChange。

当使用那个事件时,我现在有事件可以告诉我选择中哪些项目发生了变化,它告诉我该项目是被选中还是未被选中。很漂亮。

我希望能帮助其他正在解决这个问题的人。

关于C# : How do I get the actual item clicked from SelectedIndexChanged for a ListView control?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/470375/

相关文章:

c# - 窗体总是在最上面

c# - 需要对我解决此 Winforms 竞争条件的第二(和第三)意见

multithreading - 与 PowerShell 作业的递归并行性来探索文件共享?

C++ boost 线程在 MFC 中锁定 GUI 线程

c++ - Linux 线程傻瓜。有人可以解释一下 linux 中多线程库之间的区别吗?

c# - 如何在 EasyNetQ 中获取现有的 Exchange 或队列?

c# - 如何使用带有 clickonce 的文本文件并在更新时能够更新它?

C# GridView 动态构建带有文本框 ontextchanged 的​​列

c# - 关于多语言 URL 重写

c# - 如何获取DevExpress XtraGrid选中的行值?