- ベストアンサー
ListView 項目の選択/選択解除について
ListViewに表示する情報が1件しかないとき、その情報が常に選択された状態なので、 困っています。 1件しかなくても、選択したり、選択を解除したりすることは出来ないのでしょうか? または、ListViewでは出来ないけど、他のコントロールなら出来ると言う情報があり ましたらぜひ教えてください。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
失礼しました × HitItem ○ HitTest でした。 Private Sub Form_Load() Dim i As Integer With Me.ListView1 .View = lvwList '//表示形式:一覧 .HideSelection = False '//リストビューがフォーカスを失っても、選択状態を保持する .MultiSelect = True '//複数選択可能 'ダミーデータの登録 .ColumnHeaders.Add , , "ヘッダ" For i = 1 To 10 Me.ListView1.ListItems.Add , , "Dmy Data" & i Next i End With End Sub Private Sub ListView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) Dim itmX As ListItem With Me.ListView1 'マウス位置のアイテムを取得 Set itmX = .HitTest(x, y) '取得できたなら未処理 If Not (itmX Is Nothing) Then GoTo PGMEND End If '現在選択中のアイテムを取得 Set itmX = .SelectedItem '取得できなかったなら未処理 If (itmX Is Nothing) Then GoTo PGMEND End If '選択解除 Set .SelectedItem = Nothing itmX.Selected = False End With PGMEND: Set itmX = Nothing End Sub
その他の回答 (3)
- TAGOSAKU7
- ベストアンサー率65% (276/422)
以前にエクスプローラのイベントを取得したいと思って、様々なメーリングリストを調べた経験があります。 explorer.exeの話題が出たので、ついでに勝手に補足しますw >explorer.exe の右ペインのリスト これは、エクスプローラ用のリストビューです。 構造はVBのリストビューと全く同じです。 サンプルで書いた .HideSelection = False 属性を持っています。 さらにマウスダウン時に、C言語で言うHitItemマクロで、アイテムの上でのクリックかどうかを調査して、わたしのサンプルと同様なことを行っております。
お礼
ご回答ありがとうございました。 教えて頂いたサンプル通りにやってみました。 その上で、やはりエクスプローラーのような選択/選択解除が一番使い易いかな と思い、HitItemについて調べているのですが、全然検索に引っかかりません。 他に何かキーワードがありましたら教えてください。 よろしくお願いします。
- jmh
- ベストアンサー率23% (71/304)
その ListView のことは、知らないんですが、 普通(explorer.exe の右ペインのリストなど)は、 アイテムじゃないところ(余白)をクリックすると、 選択解除できます。
- TAGOSAKU7
- ベストアンサー率65% (276/422)
Private Sub Command1_Click() Dim itmX As ListItem With Me.ListView1 Set itmX = .SelectedItem If itmX Is Nothing Then Set .SelectedItem = Me.ListView1.ListItems(1) Else Set .SelectedItem = Nothing itmX.Selected = False End If End With Set itmX = Nothing End Sub Private Sub Form_Load() Dim i As Integer With Me.ListView1 .View = lvwReport .HideSelection = False .ColumnHeaders.Add , , "ヘッダ" For i = 1 To 10 Me.ListView1.ListItems.Add , , "Dmy Data" & i Next i End With End Sub
お礼
完璧です! どうもありがとうございました。 助かりました。