「ListView」コントロールで複数行選択可能の時の動きについて

解決


エム  2003-10-06 17:25:22  No: 79678  IP: [192.*.*.*]

お世話になっています。

リストビューにてマルチセレクト可能、表示形式はレポートの時の現象です。

初期にデータを複数行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

編集 削除
るぱん  2003-10-08 19:20:32  No: 79679  IP: [192.*.*.*]

Shift + クリック
      ↓
CTRL + クリックではだめなの?

編集 削除
コロン  2003-10-13 22:36:32  No: 79680  IP: [192.*.*.*]

With ListView1
        .SelectedItem.Selected = False
        Set .SelectedItem = .ListItems(3)
        Call SendMessage(.hwnd, LVM_SETSELECTIONMARK, 0, ByVal 2&)
    End With

で如何ですか?

編集 削除
ぬけさく  2003-10-15 11:13:17  No: 79681  IP: [192.*.*.*]

横からですみませんが、

>Call SendMessage(.hwnd, LVM_SETSELECTIONMARK, 0, ByVal 2&)

てどういう処理なんですか?
調べてはみたんですけど、どうもいまいち・・・

編集 削除
コロン  2003-10-15 16:51:51  No: 79682  IP: [192.*.*.*]

こちらを見て下さい。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vclib/html/_mfc_clistctrl.3a3a.setselectionmark.asp

編集 削除
エム  2003-10-21 19:15:53  No: 79683  IP: [192.*.*.*]

レスが大分遅くなってしまったこと深くお詫び申し上げます。
すみませんでした。

>るぱんさん
 ShiftでもCTRLでも、なるべき処理になってほしいのです。
 CTRL+クリックでも1行目から選択されてしまっていました。

>コロンさん
 上記処理にて解決しました。
 大変勉強になりました、ありがとうございます。

編集 削除