- PR -

ListViewのマルチ選択について

1
投稿者投稿内容
シルバ
会議室デビュー日: 2006/09/22
投稿数: 19
投稿日時: 2006-09-25 13:24
 バージョン:VB2005 OS:WindowsXP

 初めての投稿ですがよろしくおねがいします。

 VB2005でListViewを使い、CheckBoxesをTrueにして、チェックリストを作成しています。ShiftやCtrlを使って複数選択をしたいのですが、選択すると自動的にチェックもされてしまい、しかも選んだ最後のチェックがTrueかFalseによって全体のチェックのかかり方が変わってしまいます。自分で選択して(その時点ではチェックはされない)その後、ボタンを押したら選ばれているitemにチェックが入るようにしたいのですが…。
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2006-09-25 13:49
CheckBoxesをやめて、チェックと未チェックのアイコンを使うとか。
HIRO
大ベテラン
会議室デビュー日: 2002/06/21
投稿数: 109
投稿日時: 2006-09-25 15:08
FullRowSelectプロパティがTrueになっていませんか?
(Trueのままがよいのであれば、何か手を考えなければならないと思いますが)
この状態で、ShiftやCtrlで複数選択した場合には、シルバさんが記述したような動作をします。(私の環境で再現できました)
FullRowSelectをFalseにした場合は、そのような動作はしませんでした。
シルバ
会議室デビュー日: 2006/09/22
投稿数: 19
投稿日時: 2006-09-25 15:12
 返信ありがとうございます。

 ListViewプロパティのSmallImageListに作成したImageListをセットし、itemsのコレクションのimageindexの値を変えるとできました。
あとチェックボックスの所(items)をクリックするとチェック、subitemsの所はダブルクリックでチェックされるという感じにしたいのですが…。
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2006-09-25 15:27
引用:

あとチェックボックスの所(items)をクリックするとチェック、subitemsの所はダブルクリックでチェックされるという感じにしたいのですが…。


ListView.HitTestメソッドとその例が参考になるでしょう。
HIRO
大ベテラン
会議室デビュー日: 2002/06/21
投稿数: 109
投稿日時: 2006-09-25 15:29
正直、そのような処理を書いたことがないのですが

クリックはListViewのMouseClickイベント、ダブルクリックはMouseDoubleClickイベントが使用できると思います。
そのイベントの引数 MouseEventArgsのLocationプロパティでどの位置がクリックまたはダブルクリックされたか見たらどうでしょうか?

まどかさんがおっしゃるように、HitTestメソッドが良さそうですね
_________________
HIRO's.NET http://vbdotnet.fc2web.com/

[ メッセージ編集済み 編集者: HIRO 編集日時 2006-09-25 15:31 ]

[ メッセージ編集済み 編集者: HIRO 編集日時 2006-09-25 15:36 ]
シルバ
会議室デビュー日: 2006/09/22
投稿数: 19
投稿日時: 2006-09-25 15:43
 FullRowSelectをTrueにしたらこういう動きになるんですね。以前作ったプログラムを基にしたので全く考えていませんでした。

 一列目にチェックボックス、二列目に番号をセットするというリストだったのですが単純なチェックリストなので一列目にチェックボックスと名前をセットすることで解決しました。

 かなり考えが偏ってしまっていたのですごく助かりました。ありがとうございます。
1

スキルアップ/キャリアアップ(JOB@IT)