鼠标离开窗体时关闭应用程序

时间:2013-04-12 14:40:36

标签: c# winforms mouseleave

我尝试使用鼠标离开事件处理程序,但我无法工作。

private void Form1_MouseLeave(object sender, EventArgs e)
{
    this.Close();            
}

我不想褪色。当鼠标光标离开表单屏幕时,应立即关闭它。

5 个答案:

答案 0 :(得分:2)

关闭整个应用程序

Environment.Exit(0);

答案 1 :(得分:2)

如果鼠标进入子控件,则会触发MouseLeave事件,这可能不是您想要的。

尝试使用计时器:

private System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
private bool mouseEntered = false;

public Form1() {
  InitializeComponent();

  timer.Tick += timer_Tick;
  timer.Start();
}

protected override void OnMouseEnter(EventArgs e) {
  mouseEntered = true;
  base.OnMouseEnter(e);
}

void timer_Tick(object sender, EventArgs e) {
  if (mouseEntered && !this.Bounds.Contains(Cursor.Position)) {
    this.Close();
  }
}

答案 2 :(得分:1)

如果您有多种表格,我更喜欢Application.Exit()

Form.Close()仅适用于单个表单应用程序。

答案 3 :(得分:0)

  1. 如果您使用的应用程序中只有一个表单,则Application.Exit将关闭应用程序本身。

  2. 如果您要从主表单导航到另外一个表单,则在新表单中使用Form2.Close(),这将带您返回到您正在使用的主应用程序

  3. 如果要关闭它们,请先提供Form2.Close(),然后再提供Application.Exit()。这就足够了。

答案 4 :(得分:0)

我做了一个小测试程序来重现你的问题。

namespace OddFormTest
{
    using System;
    using System.Windows.Forms;

    public class OddForm : Form
    {
        public OddForm()
        {
            this.Leave += Leaver;
        }

        [STAThread]
        internal static void Main()
        {
            Application.Run(new OddForm);
        }

        private void Leave(object sender, EventArgs e)
        {
            this.Close()
        }
    }
}

正如你在问题中推断的那样。离开申请后,Leave事件不会触发。