• ベストアンサー

ListView 項目の選択/選択解除について

 ListViewに表示する情報が1件しかないとき、その情報が常に選択された状態なので、 困っています。  1件しかなくても、選択したり、選択を解除したりすることは出来ないのでしょうか?  または、ListViewでは出来ないけど、他のコントロールなら出来ると言う情報があり ましたらぜひ教えてください。  よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.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

noname#5252
質問者

お礼

完璧です! どうもありがとうございました。 助かりました。

その他の回答 (3)

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.3

以前にエクスプローラのイベントを取得したいと思って、様々なメーリングリストを調べた経験があります。 explorer.exeの話題が出たので、ついでに勝手に補足しますw >explorer.exe の右ペインのリスト これは、エクスプローラ用のリストビューです。 構造はVBのリストビューと全く同じです。 サンプルで書いた .HideSelection = False 属性を持っています。 さらにマウスダウン時に、C言語で言うHitItemマクロで、アイテムの上でのクリックかどうかを調査して、わたしのサンプルと同様なことを行っております。

noname#5252
質問者

お礼

ご回答ありがとうございました。 教えて頂いたサンプル通りにやってみました。 その上で、やはりエクスプローラーのような選択/選択解除が一番使い易いかな と思い、HitItemについて調べているのですが、全然検索に引っかかりません。 他に何かキーワードがありましたら教えてください。 よろしくお願いします。

  • jmh
  • ベストアンサー率23% (71/304)
回答No.2

その ListView のことは、知らないんですが、 普通(explorer.exe の右ペインのリストなど)は、 アイテムじゃないところ(余白)をクリックすると、 選択解除できます。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

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

関連するQ&A