リストビューでのポップアップがうまくいかない

解決


シン  2001-09-06 00:52:41  No: 74850  IP: [192.*.*.*]

リストビューでポップアップ・メニューを表示させたいのですが、リストビューの項目以外でもポップアップが出てくるようですが回避策をご存知でしょうか?(アイコン表示下でも)

編集 削除
うち  2001-09-06 09:47:39  No: 74851  IP: [192.*.*.*]

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

編集 削除
シン  2001-09-11 09:47:56  No: 74852  IP: [192.*.*.*]

ありがとうございました。大変わかりやすく、助かりました

編集 削除