Winform,鼠标单击弹出窗口

时间:2016-02-01 20:40:21

标签: c# .net winforms

我有一个小的弹出窗口,当我在窗口界外点击鼠标时,我想触发事件。

我已尝试在OnMouseClick上启动它,并检查鼠标光标是否超出弹出范围,但它似乎没有触发弹出边界。

2 个答案:

答案 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)

您是否考虑过停用活动?当表单失去焦点时,这将触发。这可以来自鼠标单击或上下文切换,但可以提供您想要的内容。