今天遇到了一个问题,winform 中使用自定义控件时,希望在点击自定义控件时设置控件为选中状态。而且这个自定义控件在一个窗体中被创建多个。
但在自定义控件中添加子控件后,导致鼠标点击事件只能响应在子控件中。
方法1.用事件向父级传递 (如果找不到方法就准备这么干了!)
方法2 不添加控件 ,显示的东西都用画的 (这有点难啊)
方法3 利用Winform 的Message机制。在自定义控件中重写方法WndProc
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x21 || m.Msg == 0x202) // WM_MOUSEACTIVATE || WM_LBUTTONUP
MessageBox.Show("click");
base.WndProc(ref m);
}
实践证明方法3可以实现预期结果。
更详细的关于Message https://www.cnblogs.com/zutian/p/11135581.html