Событие ListView MouseClick - PullRequest
       4

Событие ListView MouseClick

3 голосов
/ 12 февраля 2009

У меня есть ListView, с помощью которого я хочу отобразить одно контекстное меню, если щелкнуть элемент правой кнопкой мыши, и другое, если щелчок происходит в элементе управления ListView. Проблема, которую я получаю, заключается в том, что событие MouseClick срабатывает только при щелчке правой кнопкой мыши по элементу, а не по элементу управления. Что вызывает это и как я могу обойти это?

Ответы [ 3 ]

3 голосов
/ 12 февраля 2009

Используйте MouseUp вместо MouseClick! Извини за это. Надо было гуглить сильнее.

2 голосов
/ 12 февраля 2009

Вы можете создать подкласс 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);
        }
    }

}
}
0 голосов
/ 26 ноября 2009

У меня была похожая проблема (хочу поймать правые клики на элементе управления), решение было с помощью MouseEnter (). Должно быть полезно для того, что вы хотите сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...