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

listViewのcheckBoxes更新時の処理について

環境/言語:[win2k, .net 2003, Framework1.1]
分類:[.NET]

お世話様です。石井です。
度々すいません。

今回もlistviewについてなのですが、checkboxesプロパティをtrueにして
チェックボックスを表示させています。
チェックされているアイテムをカウントして件数を表示させたいと思うのですが
うまくいきません。

itemcheckイベントで処理してみたのですが、チェックを外そうとクリックした
時点でここに飛んでくるみたいです。
なのでチェックが外れていない状態をカウントして、メソッドを抜けたときに
表示上のチェックが外れてしまうため、件数の上下がありません。

private void listView1_ItemCheck(object sender, System.Windows.Forms.ItemCheckEventArgs e)
{
count = listView1.CheckedItems.Count;
}

なにか良い方法はないでしょうか。
宜しくお願い致します。
おっと、1.1にはItemCheckedイベントが無いんだぁ。。。

となると、e.CurrentValueとe.NewValueを比較してCheckedItems.Countと比較することになるでしょう。
まどか様、ありがとうございます。

MSDNに2.0からの追加でそれらしいのは見つけたのですが、
やっぱりそうなのですね。

> e.CurrentValueとe.NewValueを比較してCheckedItems.Countと比較することになるでしょう。

検索してみたのですが、あまりないみたいですね。ちと難しそうです。
本屋にでも行ってみます。
2.0に上げたほうが早いかもしれませんね。
>>e.CurrentValueとe.NewValueを比較してCheckedItems.Countと比較することになるでしょう。
>
> 検索してみたのですが、あまりないみたいですね。ちと難しそうです。

ん?
変化後の値がわかりますから、それによりCheckedItems.Countに-1か+1かではだめですか?
まどか様、ありがとうございます。
おかげ様で2.0に上げることなく出来ました。

if ( e.NewValue == CheckState.Unchecked )
{
cnt = (listView1.CheckedItems.Count) - 1;
}
else
{
cnt = (listView1.CheckedItems.Count) + 1;
}

このような感じでしょうか。
e.CurrentValueの使い方がわからなかったのでMSDNにのってたものを
使ってみました。
こんなのがあったんですね。勉強になりました。
ありがとうございました。
解決済み!

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