リストビューの複数選択がうまくいかずに困っています。
1.リストビューの左端にチェックボックスを表示している
(表示プロパティのCheckBoxesはTrue)
2.リストビューは複数選択可能としている
(動作プロパティのMultiSelectはTrue)
3.Ctrlキーまたは、Shiftキーで複数行選択すると、
選択行のチェックボックスが勝手にチェックONになってしまう
表示されているリストビューのチェックボックスがチェックOFFであれば、選択してもチェックOFFのままとなるように制御したいのですが、どのように対応すればよいでしょうか?
3.についてもう少し詳細に記述します。
(1)例えば、1行目を選択したことにする(チェックボックスはOFF)
(2)Ctrlキーを押しながら、5行目も選択する
→この時最初に選択した1行目のチェックボックスが勝手にONになる
ご助言をいただきたく、よろしくお願いいたします。
環境が書かれてないけど、
[VB.NET]で FullRowSelect = True に設定した時に再現する現象かなぁ…?
View = View.Details でしかテストしてないんですが…。
勝手にチェックONだけでなく勝手にチェックOFFも再現できます。
例えば、
(1)1行目5行目のチェックボックス上をマウスクリックしてチェックONにする
(2)1行目のリスト部分をマウスクリックして選択する(チェックボックスはONのまま)
(3)Ctrlキーを押しながら、5行目もリスト部分のマウスクリックで選択する
→この時最初に選択した1行目のチェックボックスが勝手にOFFになる
どうも基本としては最後に選択するアイテムのチェックの状態と
逆の状態に変更されるみたいなんだけど、複数のリスト部分を
選択した状態でテストを繰り返すと変更されなかったり、法則に
当てはまらない動きをしたり…でマイクロソフトに連絡したけど
解決しなかった気がします(かなり昔の話で担当は別の人だった
ので詳細は分かりません)。
その時は時間も無かったので動作確認したのみでしたが…
見た目を近いまま、プロパティを変更せずにどうにかするには
リスト選択の動作を自分で制御できるもので代用する…例えば
SelectedIndexChanged イベントで選択されたアイテムを全て
解除して BackColor を設定してキーボードやマウスの操作に
応じて BackColor を戻すような処理にするとか…。
チェックボックスって選択状態でスペースキーでも変更できるし
全てつじつま合わせるのは面倒な制御になりそうですが…。
ご指摘の通り、FullRowSelect = True の設定です。
チェックが勝手に変更される場合と、されない場合があり、動作が安定しないようです。
おっしゃるように、別の方法で実装するのが確かなのかもしれませんね。
申し訳ありません。
マルチポストにより、ご参考までに参照先を記述させていただきます。
http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=34773
http://vbnet-iku2.hp.infoseek.co.jp/cgi-bin/treecrsdx01/index.cgi?m=look&bnum=1741
まるるうさん、乙可憐です。
http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=34773#34793
再現するんですね。
まあ、修正依頼を出すなら、当人がインシデントを使ってくれればいいんですけどね...
>まあ、修正依頼を出すなら、当人がインシデントを使ってくれればいいんですけどね...
明らかな不具合ならインシデント消費しないよね?(汗)
2年位前の話題なので未だ修正されてないのってウチの
担当が『不具合でしょ?』って押し切ってインシデント
使わなかったからなのか、実は連絡してなかったのか
…ちょっと不安になってきた(TT)
…最近この組み合わせで ListView 使う事なかったから忘れてたよ…。
お世話になります。
今回は、リストビューの中に設定していたチェックボックスをなくして、新たに新規のボタンイベントを発生させて対応することにします。
ご意見ありがとうございました。
それから、マルチポストでの質問に関してお詫びさせていただきます。
ご不快に感じられたら申し訳なかったです。
今後、気をつけます。
ツイート | ![]() |