【问题标题】:Capturing all click events in user control捕获用户控件中的所有点击事件
【发布时间】:2009-08-25 16:39:26
【问题描述】:

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

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

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

谢谢。

【问题讨论】:

    标签: c# winforms user-interface


    【解决方案1】:

    在用户控件的顶部添加一个矩形并使用透明画笔进行绘制,然后将点击处理程序添加到此。

    安德鲁

    【讨论】:

    【解决方案2】:

    我最终通过像这样覆盖 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);
        }
    }
    

    我认为这可能是最简单的解决方案。不过,感谢安德鲁的建议!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 2021-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多