0

CheckedListBox を使用する C# アプリケーションを開発しています。

CheckedListBox には、会計、OC、物理学、経済学、数学などの科目名が含まれています。

料金が特定の科目に関連付けられている 1 つのデータベース テーブルがあります。

例:テーブル名

Subject      |     Fee

Accounting         2000
Economics          3000
OC                 2000   

ユーザーが CheckedListBox の件名をクリックすると、その料金が自動的に合計に追加されるようにアプリケーションを構築したいと考えています。

そのために、さまざまな CheckedListBox イベントを試しました: ClickSelectedIndexChangedItemCheckなど...

しかし、CheckedListBox で最初のチェックを行うと、正しい動作が得られません。

テストのために、次の科目を CheckedListBox に追加しました: 会計、経済、数学。

そして、これは私がイベントハンドラーに持っているものです:

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

最初の件名 Accounting をチェックすると、メッセージ ボックスが表示されません。しかし、Economics をクリックすると、Accounts が表示され、次に Economics が表示されます。

この場合、Accounting を最初にクリックすると、Accounting が表示されるはずです。また、件名のチェックを外しても返信がありません。

私は何をすべきか?それに関連して使用すべき特定のイベントやテクニックはありますか?

4

1 に答える 1

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());
    }
}
于 2012-10-10T04:54:34.637 に答える