none
showing popup menu on a listview RRS feed

  • General discussion

  • Hi I have this code to show a context menu when i right click on a treeView, I want the same effect for the Listvew can anyone show me how...I want it so that when i right click on an item in the listview it comes up with menus




     Private m_rClickedNode As TreeNode

     Private Sub MyContextMenu_Popup(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyContextMenu.Popup

            m_rClickedNode = TreeView1.GetNodeAt(TreeView1.PointToClient(Cursor.Position))
            cmuRefresh.Visible = True
            If Not m_rClickedNode Is Nothing Then

                Select Case m_rClickedNode.Text

                    Case "All Media"
                        cmuAddMedia.Visible = True
                        cmuAddCategory.Visible = False

    ...............
    ..............
    ..

    End Sub



    I tried something like this based on the code i used fro the treeview, but it underlines it as an error



     Private Sub lstContextMenu_Popup(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstContextMenu.Popup
            lSingleItem = ListView1.GetItemAt(ListView1.PointToClient(Cursor.Position))
        End Sub
    Monday, August 4, 2003 8:20 AM

All replies

  • The problem is that the GetItemAt method, for some unknown reason, does not have an overload that takes a Point as a parameter.  You'll need to pass X and Y individually:

    Private Sub lstContextMenu_Popup(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstContextMenu.Popup

            lSingleItem = ListView1.GetItemAt(ListView1.PointToClient(Cursor.Position).X, ListView1.PointToClient(Cursor.Position).Y)

    End Sub
    Monday, August 4, 2003 11:45 AM
  • Thanx Jacob, I have another prob though

    I tried this and it does not work


    Private Sub lstContextMenu_Popup(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstContextMenu.Popup

                    lSingleItem = ListView1.GetItemAt(ListView1.PointToClient(Cursor.Position).X, ListView1.PointToClient(Cursor.Position).Y)
            If Not lSingleItem Is Nothing Then
                Select Case lSingleItem.Text
                    Case "Kessen"

                     
                        lstUpdate.Visible = True
                        lstDelete.Visible = True
                        lstRename.Visible = True
                
                        End Select
                        End If

        End Sub


    However this works

    Private Sub MyContextMenu_Popup(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyContextMenu.Popup

            m_rClickedNode = TreeView1.GetNodeAt(TreeView1.PointToClient(Cursor.Position))
            cmuRefresh.Visible = True
            If Not m_rClickedNode Is Nothing Then

                Select Case m_rClickedNode.Text

                    Case "All Media"
                        cmuAddMedia.Visible = True
    End Sub


    Is it the difference in Controls, or i am missing something..Basically i want a context menu to show when i click on items in the list view
    Monday, August 4, 2003 12:13 PM
  • Are you receiving an error of some sort?  I use this technique all over my code and I haven't had a problem.  Tell me more about your listview so I can see if I can reproduce it.  Specifically, what is the view property set to, etc...
    Monday, August 4, 2003 2:01 PM
  • My View property is set to View.Details

    Basically I have a TreeView and a list view control....clicking on a node shows data in the List view 


    Private Sub TreeView1_AfterSelect(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
            ListView1.Items.Clear()
            ListView1.BeginUpdate()
                   With e.Node

                myManager = New clsManager()
                          For Each objMedium In myManager.Media
                    Select Case .Tag

                        Case "All_Media"
                          
                            If .Text = "All Media" Then
                                lSingleItem = ListView1.Items.Add(objMedium.Title)
                                lSingleItem.SubItems.Add(objMedium.Category.CategoryName)
                                lSingleItem.SubItems.Add(objMedium.Type.TypeName)
                                                       End If

                        Case "Categories"
                         
                            If .Text = objMedium.Category.CategoryName Then
                                lSingleItem = ListView1.Items.Add(objMedium.Title)
                                lSingleItem.SubItems.Add(objMedium.Category.CategoryName)
                                lSingleItem.SubItems.Add(objMedium.Type.TypeName)
                             
                            End If


    I dont get an error, nothing shows up..no context menu shows....The List View has 3 columns. Title, Category and Type. I was able to right click on the treeView to show a menu  and delete a Node. But now I to do that in the ListView..... 
    Tuesday, August 5, 2003 2:58 AM
  • Hi Jacob i sorted it out, I  was not associating the ListView with the context menu
    Tuesday, August 5, 2003 6:56 AM
  • lol . . .That was going to be my next question. :-)
    Tuesday, August 5, 2003 10:05 AM