Winform,鼠标单击弹出窗口

本文关键字:窗口 单击 鼠标 Winform | 更新日期: 2023-09-27 18:32:44

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

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

Winform,鼠标单击弹出窗口

讨论:

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";
        }
    }
}

您是否考虑过停用事件? 这将在窗体失去焦点时触发。 这可能来自鼠标单击或上下文切换,但可能会提供您想要的内容。