我尝试使用鼠标离开事件处理程序,但我无法工作。
private void Form1_MouseLeave(object sender, EventArgs e)
{
this.Close();
}
我不想褪色。当鼠标光标离开表单屏幕时,应立即关闭它。
答案 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)
如果您使用的应用程序中只有一个表单,则Application.Exit
将关闭应用程序本身。
如果您要从主表单导航到另外一个表单,则在新表单中使用Form2.Close()
,这将带您返回到您正在使用的主应用程序
如果要关闭它们,请先提供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
事件不会触发。