奇怪的Form的MouseEnter和MouseLeave事件 我show()了一个Form之后,想让鼠标离开这个 Form范围后,Form自动关闭,所以我把关闭事件写在了Form的MouseLeave事件,可发现等鼠标还没离开Form只要在Form上晃下就进入,Form的MouseLeave事件,请问这是为什么?如何实现鼠标离开这个 Form范围后,Form自动关闭? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 窗体中应该有其它子控件,鼠标进入子控件后,Form的MouseLeave事件就触发了 要做到这个功能,用API比较方便点。用鼠标钩子来跟踪鼠标。 我是用 form来做一个自动弹出菜单,当鼠标进入form,form存在,当鼠标出了 form的范围,form.close();如何实现?能说详细点吗?谢谢大侠了~~ 你如果只是要实现弹出菜单,为什么不用ContextMenuStrip控件? 窗体中有子控件,所以出现这样的状况你先找到该form的start position and end position然后捕获鼠标的position,如果不在以上范围内就关闭 在 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 = "离开"; } }这样看看 判断鼠标位置是否在窗体内,但要主要窗体的边框影响。这里用无边框。 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; } C#中如何实现控件的循环输出 问题简单,求更好方法! 关于计算公式问题 动态网页问题 使用地道的 C# 语言来表现设计模式 asp页上使用windows控件不能显示为什么? gridview 上用模板列写 下载文件的代码 c# 关于object类型转换 c#连接数据库问题 打开ie的问题 怎么判断上传的图片有没有被PS过 是不是原始图片 C# 怎么更改虚拟网卡的IP
用鼠标钩子来跟踪鼠标。
你先找到该form的start position and end position
然后捕获鼠标的position,如果不在以上范围内就关闭
{
Point _MousetPoint = this.PointToClient(Cursor.Position); Region _Region = new Region(this.DesktopBounds);
if (_Region.IsVisible(Cursor.Position))
{ this.Text = "未离开";
}
else
{
this.Text = "离开";
}
}
这样看看
{
if (this.Bounds.Contains(Control.MousePosition))
{
return;
}
Close();
} private void Form1_Load(object sender, EventArgs e)
{
this.FormBorderStyle = FormBorderStyle.None;
}