C# ListView鼠标单击事件

C# ListView鼠标单击事件,c#,listview,C#,Listview,我有一个ListView,我想在右键单击某个项目时显示一个上下文菜单,在ListView控件中单击时显示另一个上下文菜单。我遇到的问题是MouseClick事件仅在右键单击项目时触发,而不是控件。这是什么原因造成的?我怎样才能避免它呢?使用MouseUp而不是MouseClick!很抱歉。应该更努力地搜索。您可以将ListView子类化以添加右键单击事件: using System; using System.Collections.Generic; using System.Text; usi

我有一个ListView,我想在右键单击某个项目时显示一个上下文菜单,在ListView控件中单击时显示另一个上下文菜单。我遇到的问题是MouseClick事件仅在右键单击项目时触发,而不是控件。这是什么原因造成的?我怎样才能避免它呢?

使用MouseUp而不是MouseClick!很抱歉。应该更努力地搜索。

您可以将ListView子类化以添加右键单击事件:

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()。应该对您想做的事情有帮助。

您能将asp.net控件的代码和html输出放在页面中吗?