リストビューでポップアップ・メニューを表示させたいのですが、リストビューの項目以外でもポップアップが出てくるようですが回避策をご存知でしょうか?(アイコン表示下でも)
編集 削除ListView内のアイコン上で右クリックした時にポップアップを表示
させたい場合は、ListView1_MouseDownイベントでどのマウスボタン
がクリックされたか記憶しておき、ListView1_ItemClickイベントで
判断してポップアップを表示させれば実現できます。
以下にサンプルを記述しておきます。
ListView1 … ListViewコントロール
ImageList1 … ImageListコントロール
menuPopup … メニュー
' - - - - - - - - - - - - - - - - - - - - - - - - -
Option Explicit
Private iMouseButton As MouseButtonConstants ' マウスボタンの記憶用
' - - - - - - - - - - - - - - - - - - - - - - - - -
' 初期化処理
Private Sub Form_Load()
Dim I As Integer
Dim itmObj As ListItem
' ListViewコントロールの初期化
ListView1.View = lvwIcon
ListView1.Icons = ImageList1
Set itmObj = ListView1.ListItems.Add()
itmObj.Icon = "image1"
End Sub
' - - - - - - - - - - - - - - - - - - - - - - - - -
' ListViewコントロール内のItemをクリック
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
If (iMouseButton And vbRightButton) <> 0 Then
' 右ボタンをクリックした
PopupMenu menuPopup ' ポップアップを表示
End If
End Sub
' - - - - - - - - - - - - - - - - - - - - - - - - -
' ListViewコントロール内のクリック
Private Sub ListView1_MouseDown(Button As Integer, _
Shift As Integer, _
x As Single, y As Single)
iMouseButton = Button
End Sub
ありがとうございました。大変わかりやすく、助かりました
編集 削除