お世話になっています。
リストビューにてマルチセレクト可能、表示形式はレポートの時の現象です。
初期にデータを複数行Addした時、1行目が選択状態になっていると思います。
これをListItems.Selectedを利用して、3行目のみが選択状態になるようにします。
見た目上は、3行目のみが選択されている状態になるのですが、
ここで、4行目をShiftを押しながらクリックまたはShift+下キーを押すと、
なぜか1行目から4行目が選択されてしまいます。
やりたい事は上記のような状況で3行目と4行目が
選択されている状態になっていて欲しいのです。
以下に、サンプルのソースを載せます。
-----------------------------------------------------------------
Private Sub Form_Load()
ListView1.View = lvwReport '表示形式
ListView1.MultiSelect = True '複数行選択
ListView1.ColumnHeaders.Add , , "テスト", 900
ListView1.ListItems.Add , "A", "TEXT1"
ListView1.ListItems.Add , "B", "TEXT2"
ListView1.ListItems.Add , "C", "TEXT3"
ListView1.ListItems.Add , "D", "TEXT4"
ListView1.ListItems.Add , "E", "TEXT5"
ListView1.ListItems.Add , "F", "TEXT6"
ListView1.ListItems(1).Selected = False
ListView1.ListItems(2).Selected = False
ListView1.ListItems(3).Selected = True
ListView1.ListItems(4).Selected = False
ListView1.ListItems(5).Selected = False
ListView1.ListItems(6).Selected = False
Set ListView1.SelectedItem = ListView1.ListItems(3) '----①
End Sub
-----------------------------------------------------------------
①は本来要らないのですが、一応いれてみましたが無駄でした。
どうか、皆さんの知恵をお貸しください。
よろしくお願いします。
=環境=
VB6.0SP5、Windows2000SP4
Shift + クリック
↓
CTRL + クリックではだめなの?
With ListView1
.SelectedItem.Selected = False
Set .SelectedItem = .ListItems(3)
Call SendMessage(.hwnd, LVM_SETSELECTIONMARK, 0, ByVal 2&)
End With
で如何ですか?
横からですみませんが、
>Call SendMessage(.hwnd, LVM_SETSELECTIONMARK, 0, ByVal 2&)
てどういう処理なんですか?
調べてはみたんですけど、どうもいまいち・・・
レスが大分遅くなってしまったこと深くお詫び申し上げます。
すみませんでした。
>るぱんさん
ShiftでもCTRLでも、なるべき処理になってほしいのです。
CTRL+クリックでも1行目から選択されてしまっていました。
>コロンさん
上記処理にて解決しました。
大変勉強になりました、ありがとうございます。