2013-03-21 42 views
0

我正在做一个简单的待办事项列表程序,用户可以在文本框中输入任何内容,按下按钮,并将文本作为项目添加到CheckedListBox。现在我想在每个项目前面添加文本“完成”(如果选中),然后删除文本(如果用户取消选中)。如果选中,将文本添加到CheckedListBox中的字符串?

代码:

Private Sub MyCbList_ItemCheck(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ItemCheckEventArgs) Handles MyCbList.ItemCheck 
    If MyCbList.Items.Item(MyCbList.SelectedIndex) = True Then 
     MyCbList.Items.Item(MyCbList.SelectedIndex) = "Done: " + MyCbList.Items.Item(MyCbList.SelectedIndex) 
    Else 
     MyCbList.Items.Item(MyCbList.SelectedIndex) = MyCbList.Items.Item(MyCbList.SelectedIndex).Replace("Done: ", "") 
    End If 
End Sub 

我似乎无法得到它的工作。我从来没有处理过CheckedListBoxes。

回答

1

非常接近!目前,您的代码正在查看当前突出显示的(未选中的)项目的文本是否=“True”。

相反,我们需要检查则传递到方法的参数ItemCheckedEventArgs:

Private Sub MyCbList_ItemCheck(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ItemCheckEventArgs) Handles MyCbList.ItemCheck 
    If e.NewValue = CheckState.Checked Then 
     MyCbList.Items.Item(e.Index) = "Done: " + MyCbList.Items.Item(MyCbList.SelectedIndex) 
    Else 
     MyCbList.Items.Item(e.Index) = MyCbList.Items.Item(MyCbList.SelectedIndex).Replace("Done: ", "") 
    End If 
End Sub 
+0

非常感谢您整理我的代码了。还在用vb.net学习新东西。变量“e”究竟是什么? – Matt 2013-03-21 23:29:01

+0

.Net中的每个窗体控件事件方法都传入两个参数: “发件人”是引发事件的对象。例如如果您的表单上有1000个按钮,则“发件人”是实际点击的按钮,因此您不必尝试猜测点击了哪个按钮。 “e”是关于事件的信息。因此,例如,Button.MouseMove将具有包含鼠标的X和Y位置的“e”参数。不同的事件有不同的“e”参数,包含有趣的信息。 – 2013-03-21 23:56:27

相关问题