如何判断列表框中已选中/取消选中的项目

时间:2013-08-14 18:57:40

标签: vb.net

如何判断在checkedlistbox中更改了哪个项目的状态(已选中/未选中)? 我知道如何在项目状态发生变化时触发事件,但我不知道如何告诉WHICH项目。有什么建议吗?

P.S。我正在使用Visual Basic和.net 4.5

2 个答案:

答案 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