Hi. I have a ListView whereby I want to display one context menu if an item is right-clicked, and another if the click occurs in the ListView control. The problem I'm getting is the MouseClick event is only firing when an item is right-clicked, not the control. What's causing this and how can I get around it?
+1
A:
You could subclass the ListView to add a right-click event:
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
namespace MyCustomControls
{
public delegate void MyDelegate(Object sender, EventArgs e);
class MyListView : ListView
{
private static readonly object EventRightClickRaised = new object();
public MyListView()
{
//RightClick += new MyDelegate(OnRightClick);
}
public event EventHandler RightClick
{
add
{
Events.AddHandler(EventRightClickRaised, value);
}
remove
{
Events.RemoveHandler(EventRightClickRaised, value);
}
}
protected override void OnMouseUp(MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
OnRightClick(EventArgs.Empty);
}
base.OnMouseUp(e);
}
protected void OnRightClick(EventArgs e)
{
EventHandler RightClickRaised = (EventHandler)Events[EventRightClickRaised];
if (RightClickRaised != null)
{
RightClickRaised(this, e);
}
}
}
}
Patrick McDonald
2009-02-12 11:48:35
A:
I had similar problem (want to catch right clicks on the control), the solution was using MouseEnter(). Should be helpful for what you want to do.
Pierre
2009-11-26 13:45:47