0

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

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

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

4

5 回答 5

2

关闭整个应用程序使用

Environment.Exit(0);
于 2013-04-12T14:44:59.877 回答
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();
  }
}
于 2013-04-12T14:50:54.937 回答
1

如果你有几种我喜欢的形式Application.Exit()

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

于 2013-04-12T14:45:00.153 回答
0
  1. 如果您正在使用的该应用程序中只有一个表单,Application.Exit则将关闭该应用程序本身。

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

  3. 如果你想关闭它们,那么先给Form2.Close()然后给Application.Exit()。那就足够了。

于 2013-04-12T14:46:40.957 回答
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事件不会触发。

于 2013-04-12T15:27:29.563 回答