当尝试使用ListView的ItemCheck事件时,我发现事件在项目被选中之前触发,因此运行代码以查看检查哪些项目不起作用预期,因为刚刚检查过的项目仍然具有旧的Checked值。
Private Sub MyListView_ItemCheck(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemCheckEventArgs) Handles MyListView.ItemCheck
.NET Framework中有一个ItemChecked事件,但唉,.NET Compact Framework中缺少这个。是否有其他方法在检查了ListViewItem之后执行代码?
答案 0 :(得分:2)
您可以使用此事件,因为参数通过ItemCheckEventArgs.NewValue和ItemCheckEventArgs.Index属性公开已检查的项及其值。
您应该能够使用此信息以及列表视图中的其他项来确定对象的当前状态。
答案 1 :(得分:1)
在尝试了一些事情并查看像MouseUp这样似乎无法触发的隐藏事件之后,我想出了这个解决方案:
Private Sub MyListView_ItemCheck(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemCheckEventArgs) Handles MyListView.ItemCheck
Me.MyListView.Items(e.Index).Checked = CType(e.NewValue, Boolean)
Call DoStuffWithCheckedItems()
End Sub
它看起来非常可靠。我基本上只是自己更新Checked属性。