18 个解决方案
#1
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();
}
}
}
#2
private void From_Deactiveate(object sender, EventArgs e)
{
this.Close();// this.Visible = false;隐藏
}
{
this.Close();// this.Visible = false;隐藏
}
#3
路过,标记,回看
#4
wartim好厉害哦,学习了。
#5
学习wartim
#6
wartim
已经测试,符合楼主要求。谢谢
已经测试,符合楼主要求。谢谢
#7
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();
}
改进一下,可以实现鼠标移动位置
#8
额,窗体的失去焦点的事件不行么
#9
有那么复杂吗?这样多好:
public Form1()
{
InitializeComponent();
this.Deactivate += new EventHandler(Form1_Deactivate);
}
void Form1_Deactivate(object sender, EventArgs e)
{
this.Close();
//this.Hide();
}
#10
private void Frm_MouseLeave(object sender, EventArgs e)
{
this.Opacity = 0.5d;//这是透明
//this.Hide();
}
应该不用那么麻烦吧
{
this.Opacity = 0.5d;//这是透明
//this.Hide();
}
应该不用那么麻烦吧
#11
楼主的头像真爽
#12
如果用失去焦点事件的缺点是需要代码判断,不是任何失去焦点引起的事件都符合lz关闭的条件,而且如果要关闭的这个form是一个showdialog的窗口,如果点击父窗口,则不会切换焦点引发关闭
#13
如果该窗口再new 一个新form show的话,也会触发自己的失去焦点事件
#14
标记一下,再顶一下
#15
lz的头像是亮点
#16
可以注册热键
#17
不错不错。可以直接用Deactivate
#18
ShowDialog的子窗体,怎么样在单击主窗体时把它关闭
#1
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();
}
}
}
#2
private void From_Deactiveate(object sender, EventArgs e)
{
this.Close();// this.Visible = false;隐藏
}
{
this.Close();// this.Visible = false;隐藏
}
#3
路过,标记,回看
#4
wartim好厉害哦,学习了。
#5
学习wartim
#6
wartim
已经测试,符合楼主要求。谢谢
已经测试,符合楼主要求。谢谢
#7
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();
}
改进一下,可以实现鼠标移动位置
#8
额,窗体的失去焦点的事件不行么
#9
有那么复杂吗?这样多好:
public Form1()
{
InitializeComponent();
this.Deactivate += new EventHandler(Form1_Deactivate);
}
void Form1_Deactivate(object sender, EventArgs e)
{
this.Close();
//this.Hide();
}
#10
private void Frm_MouseLeave(object sender, EventArgs e)
{
this.Opacity = 0.5d;//这是透明
//this.Hide();
}
应该不用那么麻烦吧
{
this.Opacity = 0.5d;//这是透明
//this.Hide();
}
应该不用那么麻烦吧
#11
楼主的头像真爽
#12
如果用失去焦点事件的缺点是需要代码判断,不是任何失去焦点引起的事件都符合lz关闭的条件,而且如果要关闭的这个form是一个showdialog的窗口,如果点击父窗口,则不会切换焦点引发关闭
#13
如果该窗口再new 一个新form show的话,也会触发自己的失去焦点事件
#14
标记一下,再顶一下
#15
lz的头像是亮点
#16
可以注册热键
#17
不错不错。可以直接用Deactivate
#18
ShowDialog的子窗体,怎么样在单击主窗体时把它关闭