捕获用户控件中的所有单击事件

时间:2009-08-25 16:39:27

标签: c# winforms user-interface

我正在开发一种自定义列表的想法,它基本上由在FlowLayoutPanel中垂直堆叠的用户控件组成。我是这样编写的,这样我就可以添加选中时出现在列表项上的按钮。

列表项控件上面有一些标签和一些面板,因此为了确定是否单击了整个列表项(选择它,并使按钮出现),我必须添加单击事件处理程序所有标签和面板等。

我想知道是否有更简单的方法来捕获控件的所有点击事件,有点像KeyPreview,但是对于点击事件。

感谢。

2 个答案:

答案 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的建议!