我有一个ListView,在其中,如果右键单击项,则想显示一个上下文菜单,如果单击在ListView控件中发生,则显示另一个上下文菜单。 我遇到的问题是,当右键单击项时,MouseClick事件才会触发,而不是控件。 这是什么原因,我该如何解决?
使用 MouseUp 代替 MouseClick!抱歉,我应该更加努力地搜索。
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);
}
}
}
}
我曾经遇到过类似的问题(想要在控件上捕获右键点击),解决方法是使用MouseEnter()。对于您想要做的事情应该会有所帮助。