0

我正在开发一个使用 CheckedListBox 的 C# 应用程序。

CheckedListBox 包含科目名称,如:会计、OC、物理、经济学、数学等...

我有一个数据库表,其中费用与特定科目相关:

例如表名费用:

Subject      |     Fee

Accounting         2000
Economics          3000
OC                 2000   

我想构建应用程序,以便当用户单击 CheckedListBox 中的主题时,它的费用应该自动添加到总数中。

为此,我尝试了不同的 CheckedListBox 事件:Click、、、SelectedIndexChangedItemCheck...

但是当我对 CheckedListBox 进行第一次检查时,我没有得到正确的行为。

对于测试,我在 CheckedListBox 中添加了以下科目:会计、经济学和数学。

这就是我的事件处理程序中的内容:

for(int i=0; i<chlstbox.CheckedItems.Count; i++)
{
    messagebox.show(chklstbox.CheckedItems[i].ToString());
}

当我检查第一个主题会计时,它没有显示任何消息框。但是当我点击经济学时,它会显示账户,然后是经济学。

在这种情况下,当我第一次单击“会计”时,它应该显示“会计”。当我取消选中主题时没有回复。

我该怎么办?我应该使用任何与之相关的特定事件或技术吗?

4

1 回答 1

1

如果您查看ItemChecketEventArgs,您将看到正在选择的项目的 CurrentValue、OldValue 和索引。所以尝试这样的事情。ItemCheck事件让您在实际更改之前了解正在更改的内容。

private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
    if (e.NewValue == CheckState.Checked)
    {
        MessageBox.Show(checkedListBox1.Items[e.Index].ToString());
    }
}
于 2012-10-10T04:54:34.637 回答