【问题标题】:ListView MouseClick EventListView 鼠标点击事件
【发布时间】:2009-02-12 11:11:35
【问题描述】:

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

【问题讨论】:

  • 可以把asp.net控件的代码和html输出的代码放在页面里吗?

标签: c# listview


【解决方案1】:

使用 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);
            }
        }
    
    }
    }
    

    【讨论】:

      【解决方案3】:

      我遇到了类似的问题(想抓住控件的右键单击),解决方案是使用 MouseEnter()。应该对您想做的事情有所帮助。

      【讨论】: