我正在开发一个使用CheckedListBox的C#应用程序。
CheckedListBox包含主题名称,如:会计,OC,物理,经济学,数学等......
我有一个数据库表,其中费用与特定主题相关:
例如表名费:
Subject | Fee
Accounting 2000
Economics 3000
OC 2000
我想构建应用程序,以便当用户点击CheckedListBox中的主题时,它的费用应自动添加到总数中。
为此,我尝试了不同的CheckedListBox事件:Click
,SelectedIndexChanged
,ItemCheck
等......
但是当我对CheckedListBox进行第一次检查时,我没有得到正确的行为。
对于测试,我将以下主题添加到CheckedListBox:会计,经济学和数学。
这就是我在事件处理程序中的内容:
for(int i=0; i<chlstbox.CheckedItems.Count; i++)
{
messagebox.show(chklstbox.CheckedItems[i].ToString());
}
当我检查第一个主题会计时,它没有显示任何消息框。但是,当我点击经济学时,它会向我显示账户,然后是经济学。
在这种情况下,它应该在我第一次点击会计时显示会计。当我取消检查主题时,没有回复。
我该怎么办?我应该使用与之相关的特定事件或技术吗?
答案 0 :(得分:1)
如果查看ItemChecketEventArgs,您将看到正在选择的项目的CurrentValue,OldValue和Index。所以尝试这样的事情。 ItemCheck事件可让您在物理更改之前了解更改内容。
private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
if (e.NewValue == CheckState.Checked)
{
MessageBox.Show(checkedListBox1.Items[e.Index].ToString());
}
}