0

データベースからエントリを選択し、ファイルのリストをcheckedListBox2にロードして、データベース内のエントリに関連するファイルをチェックします。すべてcheckedListBox2sの形式です。チェックされている項目はデータベース エントリに関するものであり、チェックされていない項目は関係ありません。

問題は、checkedListBox2 の最初の項目 (インデックス 0) をクリックしてその項目をチェックすると、checkedListBox2.GetItemChecked() 関数が true ではなく false を返し、最初の項目のチェックを外すことです (私の SelectedIndexChanged イベントには項目のチェックを外すコード)。これは、その最初のアイテムを最初にクリックした場合にのみ発生します (別のアイテムの前にクリックすると、すべて正常に動作します)。また、最初の項目がチェックされていない場合、すべて正常に動作します。

 private void checkedListBox2_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (checkedListBox2.GetItemChecked(checkedListBox2.SelectedIndex) == true)
        {
           ...
           ...
        else
        {
           ....
        }
    }

何が悪いのか理解できません。最初に問題はcheckedListBox2のロード中に発生するイベントにあると思いましたが、ロード後も同じ問題です。何か不足していますか?

4

2 に答える 2

0

考えてみてください。
最初のアイテムは選択されたアイテムです。
イベントはSelectedIndexChangedです。
最初の(インデックス0)を100回クリックすると、そのイベントは発生しません。

別のイベントにフックする必要があります。

双方向バインディングを介してそれを行う方が良いです。

于 2012-10-02T21:04:14.077 に答える
0

SelectedIndexChanged を使用する代わりに、ItemCheck イベントを使用してみましたか?

ItemCheck イベントは項目がチェックされた後に発生しますが、SelectedIndexChanged イベントは項目が選択されたときに発生します。つまり、必ずしもチェックする必要はありません。

private void checkedListBox_ItemCheck(object sender, ItemCheckEventArgs e) {
    if (checkedListBox.GetItemChecked(e.Index)) { 

    }
}
于 2012-10-02T20:59:11.533 に答える