我有一个小的弹出窗口,当我在窗口界外点击鼠标时,我想触发事件。
我已尝试在OnMouseClick上启动它,并检查鼠标光标是否超出弹出范围,但它似乎没有触发弹出边界。
答案 0 :(得分:2)
讨论:
public partial class FrmPopup : Form {
public FrmPopup() {
InitializeComponent();
}
const uint WM_NCACTIVATE = 0x0086;
protected override void WndProc(ref Message m) {
base.WndProc(ref m);
if (m.Msg == WM_NCACTIVATE && m.WParam == IntPtr.Zero) {
if(!ClientRectangle.Contains(PointToClient(Control.MousePosition)) && MouseButtons == MouseButtons.Left)
label1.Text = "Clicked outside of window";
}
}
}
答案 1 :(得分:1)
您是否考虑过停用活动?当表单失去焦点时,这将触发。这可以来自鼠标单击或上下文切换,但可以提供您想要的内容。