我尝试使用鼠标离开事件处理程序,但我无法使用它。
private void Form1_MouseLeave(object sender, EventArgs e)
{
this.Close();
}
我不想褪色。当鼠标光标离开表单屏幕时,它应该立即关闭。
我尝试使用鼠标离开事件处理程序,但我无法使用它。
private void Form1_MouseLeave(object sender, EventArgs e)
{
this.Close();
}
我不想褪色。当鼠标光标离开表单屏幕时,它应该立即关闭。
关闭整个应用程序使用
Environment.Exit(0);
如果鼠标进入子控件,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();
}
}
如果你有几种我喜欢的形式Application.Exit()
。
Form.Close()
仅适用于单个表单应用程序。
如果您正在使用的该应用程序中只有一个表单,Application.Exit
则将关闭该应用程序本身。
如果您要从主表单导航到另一个表单,那么在新表单中,使用Form2.Close()
,这将带您回到您正在使用的主应用程序。
如果你想关闭它们,那么先给Form2.Close()
然后给Application.Exit()
。那就足够了。
我做了一个小测试程序来重现你的问题。
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
事件不会触发。