我show()了一个Form之后,想让鼠标离开这个 Form范围后,Form自动关闭,所以我把关闭事件写在了Form的MouseLeave事件,可发现等鼠标还没离开Form只要在Form上晃下就进入,Form的MouseLeave事件,请问这是为什么?如何实现鼠标离开这个 Form范围后,Form自动关闭?

解决方案 »

  1.   

    窗体中应该有其它子控件,鼠标进入子控件后,Form的MouseLeave事件就触发了
      

  2.   

    要做到这个功能,用API比较方便点。
    用鼠标钩子来跟踪鼠标。
      

  3.   

    我是用 form来做一个自动弹出菜单,当鼠标进入form,form存在,当鼠标出了 form的范围,form.close();如何实现?能说详细点吗?谢谢大侠了~~
      

  4.   

    你如果只是要实现弹出菜单,为什么不用ContextMenuStrip控件?
      

  5.   

    窗体中有子控件,所以出现这样的状况
    你先找到该form的start position and end position
    然后捕获鼠标的position,如果不在以上范围内就关闭
      

  6.   

    在 MouseLeave事件里判断下位置   private void Form1_MouseLeave(object sender, EventArgs e)
            {
                Point _MousetPoint = this.PointToClient(Cursor.Position);            Region _Region = new Region(this.DesktopBounds);
                if (_Region.IsVisible(Cursor.Position))
                {                this.Text = "未离开";
                }
                else
                {
                    this.Text = "离开";
                }
            }
    这样看看
      

  7.   

    判断鼠标位置是否在窗体内,但要主要窗体的边框影响。这里用无边框。         private void Form1_MouseLeave(object sender, EventArgs e)
    {
    if (this.Bounds.Contains(Control.MousePosition))
    {
    return;
    }
    Close();
    } private void Form1_Load(object sender, EventArgs e)
    {
    this.FormBorderStyle = FormBorderStyle.None;
     
    }