Controlling ContextMenu a bit better.

F

Frank Rizzo

Hello,

I have a listview control with bunch of entries. When the user
right-clicks on the item, I want a context menu to come up. So I
created a ContextMenu instance and assigned it to ListView.ContextMenu
property.

The problem is that the context menu comes up regardless of whether I
right-click on the item or the empty space or the column header. I want
it only to come up when the user right-clicks on an item. How can I
control the ContextMenu better?
 
S

Simon Jefferies

Hello,

The way I do it is to handle the AfterSelect() event of the listview item
and then determine what has been selected.

If a valid item was selected, then set the ContextMenu property to your
context menu otherwise you can set it to Nothing.

HTH

Regards
Simon Jefferies
mailto:simon[nospam]@cooltoolsonline.co.uk
-- remove [nospam] to email me --
 
S

Simon Mayr

Frank said:
Hello,

I have a listview control with bunch of entries. When the user
right-clicks on the item, I want a context menu to come up. So I
created a ContextMenu instance and assigned it to
ListView.ContextMenu property.

The problem is that the context menu comes up regardless of whether I
right-click on the item or the empty space or the column header. I
want it only to come up when the user right-clicks on an item. How
can I control the ContextMenu better?

Hello Frank:

I think this might work for you:

'********************************************************************
Private Sub SelectItem(ByVal sender As Object, _
ByVal e As System.Windows.Forms.MouseEventArgs) _
Handles YourListViewName.MouseDown

Dim lvItem As ListViewItem

lvItem = Me.YourListViewName.GetItemAt(e.X, e.Y)
If e.Button = MouseButtons.Right _
AndAlso Not IsNothing(lvItem) Then

Me.YourContextMenu.Show(CType(sender, ListView), _
New Point(e.X, e.Y))

End If

End Sub
'*********************************************************************

Simon
 
F

Frank Rizzo

You, my friend, are the man!

Simon said:
Hello Frank:

I think this might work for you:

'********************************************************************
Private Sub SelectItem(ByVal sender As Object, _
ByVal e As System.Windows.Forms.MouseEventArgs) _
Handles YourListViewName.MouseDown

Dim lvItem As ListViewItem

lvItem = Me.YourListViewName.GetItemAt(e.X, e.Y)
If e.Button = MouseButtons.Right _
AndAlso Not IsNothing(lvItem) Then

Me.YourContextMenu.Show(CType(sender, ListView), _
New Point(e.X, e.Y))

End If

End Sub
'*********************************************************************

Simon
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads

_ ContextMenu questions 7
ContextMenus?? 2
MSFLEXGRID and CONTEXTMENU 2
Can't clone ContextMenu 7
Bug in ContextMenu : SOLVED!!!!!! 14
Context Menu question 3
help with datagrid 1
Datagrids 2

Top