我正在开发一种自定义列表的想法,它基本上由在FlowLayoutPanel中垂直堆叠的用户控件组成。我是这样编写的,这样我就可以添加选中时出现在列表项上的按钮。
列表项控件上面有一些标签和一些面板,因此为了确定是否单击了整个列表项(选择它,并使按钮出现),我必须添加单击事件处理程序所有标签和面板等。
我想知道是否有更简单的方法来捕获控件的所有点击事件,有点像KeyPreview,但是对于点击事件。
感谢。
答案 0 :(得分:0)
在用户控件的顶部添加一个Rectangle并使用透明画笔绘制,然后将click处理程序添加到此处。
安德鲁
答案 1 :(得分:0)
我最终通过覆盖WndProc解决了这个问题:
public partial class ListItem: UserControl
{
private const int WM_MOUSEACTIVATE = 0x0021;
protected override void WndProc(ref Message m)
{
if(m.Msg == WM_MOUSEACTIVATE)
{
Debug.Print("Activated!");
}
base.WndProc(ref m);
}
}
我认为这可能是最简单的解决方案。不过,感谢Andrew的建议!