如何判断在checkedlistbox中更改了哪个项目的状态(已选中/未选中)? 我知道如何在项目状态发生变化时触发事件,但我不知道如何告诉WHICH项目。有什么建议吗?
P.S。我正在使用Visual Basic和.net 4.5
答案 0 :(得分:2)
你想要的是ItemCheckEventArgs.Index
所指的
结帐http://msdn.microsoft.com/en-us/library/system.windows.forms.itemcheckeventargs.index.aspx
在底部: -
Private Sub ListView1_ItemCheck1(ByVal sender As Object, _
ByVal e As System.Windows.Forms.ItemCheckEventArgs) _
Handles ListView1.ItemCheck
If (e.CurrentValue = CheckState.Unchecked) Then
price += Double.Parse( _
Me.ListView1.Items(e.Index).SubItems(1).Text)
ElseIf (e.CurrentValue = CheckState.Checked) Then
price -= Double.Parse( _
Me.ListView1.Items(e.Index).SubItems(1).Text)
End If
' Output the price to TextBox1.
TextBox1.Text = CType(price, String)
End Sub
答案 1 :(得分:2)
选中列表框的CheckedItems
集合将为您提供已检查的列表中的每个项目,通常这会连接到按钮事件,如下所示:
Private Sub WhatIsChecked_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles WhatIsChecked.Click
For Each itemChecked In CheckedListBox1.CheckedItems
' Do something with each checked item
Next
End Sub
注意:在此示例中,有一个名为WhatIsChecked
的按钮。
如果您只是想知道列表中某个复选框的更改时间,请使用以下命令:
Private Sub CheckedListBox1_ItemCheck(sender as Object, e as ItemCheckEventArgs) _
Handles CheckedListBox1.ItemCheck
Dim messageBoxVB as New System.Text.StringBuilder()
messageBoxVB.AppendFormat("{0} = {1}", "Index", e.Index)
messageBoxVB.AppendLine()
messageBoxVB.AppendFormat("{0} = {1}", "NewValue", e.NewValue)
messageBoxVB.AppendLine()
messageBoxVB.AppendFormat("{0} = {1}", "CurrentValue", e.CurrentValue)
messageBoxVB.AppendLine()
MessageBox.Show(messageBoxVB.ToString(),"ItemCheck Event")
End Sub