6

私はcheckedlistbox内の各項目をチェックしようとしており、チェックされているかどうかに応じて項目を操作しています。indexCollection を使用してチェック済みの項目を取得することはできましたが、すべての項目を取得するのに問題があり、「System.String 型のオブジェクトを System.String 型にキャストできません」というエラーが表示されます。 Windows.Forms.ListViewItem'

        foreach (ListViewItem item in checkedListBox2.Items)
        {
            if (item.Checked == true)
                //do something with item.name

            else
                //do something else with item.name
        }

foreach 行で文字列キャスト エラーが発生する理由がわかりません。どうすればこれを達成できますか? ありがとう。

4

3 に答える 3

7

チェックボックスが不確定状態になることを許可する場合は、GetItemCheckStateメソッドを使用してチェック ボックスの状態を取得する必要があります。

for (int i = 0; i < checkedListBox2.Items.Count; i++) 
{
     CheckState st = checkedListBox2.GetItemCheckState(checkedListBox2.Items.IndexOf(i));
     if(st == CheckState.Checked)
        ....
     else if(st == CheckState.Unchecked)
        ....
     else
        ... // inderminate
}        

それ以外の場合は、真/偽の値を返すGetItemCheckedを呼び出すだけで十分です (不確定な状態の場合も真)。

于 2013-02-14T10:40:28.660 に答える
2

CheckedListBox.Itemsは、のコレクションでobjectsはなく、のコレクションを保持しますListViewItem

この方法で確認できます

        for (int i = 0; i < checkedListBox2.Items.Count; i++)
        {
            if (checkedListBox2.GetItemChecked(i))
            {
                //do something with checkedListBox2.Items[i]
            }
            else
            {
                //do something else with checkedListBox2.Items[i]
            }
        }
于 2013-02-14T10:32:26.773 に答える