怎样能够让鼠标在窗体外点击,窗体自动关闭或隐藏?

cooling0609 2010-01-13 04:21:28
怎样能够让鼠标在窗体外点击,窗体自动关闭或隐藏?
...全文
2349 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
LONG云 2012-06-19
  • 打赏
  • 举报
回复
ShowDialog的子窗体,怎么样在单击主窗体时把它关闭
zhewky 2011-08-08
  • 打赏
  • 举报
回复
不错不错。可以直接用Deactivate
  • 打赏
  • 举报
回复
可以注册热键
michaelnami 2010-01-14
  • 打赏
  • 举报
回复
lz的头像是亮点
大黄鸭在发光 2010-01-14
  • 打赏
  • 举报
回复
标记一下,再顶一下
wartim 2010-01-14
  • 打赏
  • 举报
回复
如果该窗口再new 一个新form show的话,也会触发自己的失去焦点事件
wartim 2010-01-14
  • 打赏
  • 举报
回复
如果用失去焦点事件的缺点是需要代码判断,不是任何失去焦点引起的事件都符合lz关闭的条件,而且如果要关闭的这个form是一个showdialog的窗口,如果点击父窗口,则不会切换焦点引发关闭
yinrongg 2010-01-13
  • 打赏
  • 举报
回复
楼主的头像真爽
bourbon1795 2010-01-13
  • 打赏
  • 举报
回复
private void Frm_MouseLeave(object sender, EventArgs e)
{
this.Opacity = 0.5d;//这是透明
//this.Hide();
}
应该不用那么麻烦吧
mngzilin 2010-01-13
  • 打赏
  • 举报
回复 1
有那么复杂吗?这样多好:
public Form1()
{
InitializeComponent();
this.Deactivate += new EventHandler(Form1_Deactivate);

}
void Form1_Deactivate(object sender, EventArgs e)
{
this.Close();
//this.Hide();
}
assky124 2010-01-13
  • 打赏
  • 举报
回复
额,窗体的失去焦点的事件不行么
hovoy 2010-01-13
  • 打赏
  • 举报
回复

public Form4()
{
InitializeComponent();

Timer T = new Timer();
T.Interval = 100;
T.Tick += new EventHandler(T_Tick);
T.Enabled = true;
}


void T_Tick(object sender, EventArgs e)
{
if (!this.Bounds.Contains(Control.MousePosition))
Text = Control.MousePosition.X.ToString();

//Close();
}


改进一下,可以实现鼠标移动位置
hovoy 2010-01-13
  • 打赏
  • 举报
回复
wartim
已经测试,符合楼主要求。谢谢
nimingxin1987 2010-01-13
  • 打赏
  • 举报
回复
学习wartim
csdnfan 2010-01-13
  • 打赏
  • 举报
回复
wartim好厉害哦,学习了。
码代码的蜗牛 2010-01-13
  • 打赏
  • 举报
回复
路过,标记,回看
不懂装懂 2010-01-13
  • 打赏
  • 举报
回复
private void From_Deactiveate(object sender, EventArgs e)
{
this.Close();// this.Visible = false;隐藏
}
wartim 2010-01-13
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication291
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

Timer T = new Timer();
T.Interval = 100;
T.Tick += new EventHandler(T_Tick);
T.Enabled = true;
}

void T_Tick(object sender, EventArgs e)
{
if (!this.Bounds.Contains(Control.MousePosition)
&&Control.MouseButtons==MouseButtons.Left )
Close();
}
}
}

111,130

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧