我有一个UserControl-derived
带有几个子控件的控件(这里:三个停靠标签)。为了对用户控件上任意位置的点击做出反应,我override WndProc()
寻找
WM_PARENTNOTIFY/WM_LBUTTONCLICK
- 这是在MSDN上提出的,并且效果很好。
用户点击鼠标的反应是打开一个(模态)弹出对话框。但是,当我尝试实现这一点时,出现了一个奇怪的行为:有时,对话框会闪烁几次,并且会出现 Windows 声音。关闭对话框后,用户必须单击主窗口(包含 UserControl)才能重新设置焦点。有时,没有闪烁也没有声音,但主窗体也失去了焦点。
与此相反,UserControl 旁边的按钮也会打开该弹出对话框。没有闪烁,没有声音,关闭弹出窗口后,主窗口自动重新获得焦点。
UserControl/WndProc 构造有什么问题?
我包括一个示例项目(VS2008)来说明行为:(通过 DropBox)