ListView 鼠标单击事件

3

我有一个ListView,在其中,如果右键单击项,则想显示一个上下文菜单,如果单击在ListView控件中发生,则显示另一个上下文菜单。 我遇到的问题是,当右键单击项时,MouseClick事件才会触发,而不是控件。 这是什么原因,我该如何解决?


你能否将ASP.NET控件的代码和HTML输出放置在页面中? - balexandre
3个回答

3

使用 MouseUp 代替 MouseClick!抱歉,我应该更加努力地搜索。


2
您可以通过子类化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);
        }
    }

}
}

-1

我曾经遇到过类似的问题(想要在控件上捕获右键点击),解决方法是使用MouseEnter()。对于您想要做的事情应该会有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接