У меня есть ListView, в котором я хочу отображать одно контекстное меню, если элемент щелкнут правой кнопкой мыши, и другое, если щелчок происходит в элементе управления ListView. Проблема, с которой я сталкиваюсь, заключается в том, что событие MouseClick срабатывает только при щелчке правой кнопкой мыши по элементу, а не по элементу управления. Что вызывает это и как я могу обойти это?
ListView Событие MouseClick
comment
Вы можете разместить код элемента управления asp.net и вывод html на странице?
- person balexandre   schedule 12.02.2009
Ответы (3)
Вы можете создать подкласс 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);
}
}
}
}
person
Patrick McDonald
schedule
12.02.2009
Используйте MouseUp вместо MouseClick! Извини за это. Надо было погуглить посильнее.
person
Community
schedule
12.02.2009
У меня была аналогичная проблема (хочу поймать правый клик по элементу управления), решение заключалось в использовании MouseEnter(). Должно быть полезно для того, что вы хотите сделать.
person
Pierre
schedule
26.11.2009