DOBON.NET DOBON.NETプログラミング掲示板過去ログ

listViewのチェックボックス

環境/言語:[win2k, C# .net2003 Framework v1.1]
分類:[.NET]

お世話様です。石井です。

C# .net(2003)のlistViewでリストを作っています。
プロパティの設定は
View:Details
CheckBoxes:true
にして、チェックボックスを表示させています。

これのチェックを全て外すようにしたいのですが、うまくいきません。
どうゆう訳かひとつ置きにチェックがはずれているようです。

Cnt = listView1.Items.Count;

for ( i = 0; i < Cnt; i++ )
{
    listView1.CheckedItems[i].Checked = false;
}

ソースです。

□ あああ
■ いいい
□ ううう
■ えええ
□ おおお

具体的にこのような感じになります。

どなたか心当たりのある方、対処法など御座いましたら
教えて頂けないでしょうか。

宜しくお願い致します。
  • 題名: Re[1]: listViewのチェックボックス
  • 著者: はいこーん
  • 日時: 2006/06/09 18:22:12
  • ID: 16181
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
■No16180に返信(石井さんの記事)
> これのチェックを全て外すようにしたいのですが、うまくいきません。
> どうゆう訳かひとつ置きにチェックがはずれているようです。

どっかでインクリメントされてるんでしょう。
ただの値ですし、ブレイクポイントで追ってみればすぐわかるところだと思いますよ。
試してませんが、
Cnt = listView1.Items.Count;
は、
Cnt = listView1.CheckedItems.Count;
じゃないですか?
以前調べたような気がしますが、確か CheckedItems は取得するたびに Items からチェック済みアイテムを調べてコレクションに格納するというプロパティでは実装して欲しくないような事をやっていたような気がします。
Items を foreach で回して Checked を確認するとかした方が良いような。
■No16183に返信(Hongliangさんの記事)
> Items を foreach で回して Checked を確認するとかした方が良いような。

あ〜、確かにそうですね。私が上で発言したことは無視して下さい。すみません。
お世話になっております。石井です。

皆様、ありがとうございます。
出来ました。

返事遅くなりまして申し訳ありません。
foreachにつまづきまして・・・

foreach ( ListViewItem lvi in this.listView1.CheckedItems )
{
    lvi.Checked = false;
}

こんな感じでしょうか。
foreach使ったことなかったので勉強になりました。
いまいち自信はないのですが・・・

ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板