怎么让一个窗体在点“X”的时候是隐藏,而不是关闭? RT 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是一个子窗体,如果直接关闭,下次就不能show()了,还得重新new。 this.Closing += new System.ComponentModel.CancelEventHandler(this.Form1_Closing); private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e) { // Hide the form... this.Hide(); // Cancel the close... e.Cancel = true; } protected override void WndProc(ref Message m) { const int WM_SYSCOMMAND = 0x0112; const int SC_CLOSE = 0xF060; if (m.Msg == WM_SYSCOMMAND && (int) m.WParam == SC_CLOSE) { this.WindowState = FormWindowState.Minimized; return; } base.WndProc(ref m); } protected override void WndProc(ref Message m) { const int WM_SYSCOMMAND = 0x0112; const int SC_CLOSE = 0xF060; if (m.Msg == WM_SYSCOMMAND && (int) m.WParam == SC_CLOSE) { this.Visible = false; //隐藏。 return; } base.WndProc(ref m); } 我这里正好有一个 public const int WM_SYSCOMMAND=0x112; public const int SC_CLOSE=0xF060; protected override void WndProc(ref Message m) { if( m.Msg == WM_SYSCOMMAND ) { if( m.WParam.ToInt32() == SC_CLOSE || m.WParam.ToInt32() == SC_MINIMIZE ) { this.Visible = false; return; } } base.WndProc (ref m); } 二楼是正确的方法,也是通常的方法,除此之外还可以:protected override void Dispose( bool disposing ){ this.Hide();} 看看MSDN,如果把子窗体类型设置成对话框,则点关闭按钮时没有调用Form.Close()事件。 按照 jiangsheng(蒋晟.Net[MVP]) 说的,达到了我的要的效果。只是我必须判断用户是不是要关闭整个程序,否则子窗口永远不关闭,程序就没办法正常退出。kingdhy(飞鹰) 说得听起来应该更好用,但是我没找到,再发个贴问。 UTF-8文本文档EXCEL打开的一些问题 你好: 取进程名(包括扩展名) (散分讨论)学习ASP.NET2.0中遇到的各种疑问?顶者有分! 如何调用系统本身程序打开文件? 请问DataGridView如何只显示指定的列?急啊!!!! 系统系统登录成功进入主页面后,如何防止用户再退到登录页面?(安全考虑) 服务器给客户端直接发送数据的方法有哪些,效率如何 多重继承问题的请教 学习c#的十大理由(歪理) c#控制台程序不支持事件的吗?我是指event和委托 循环问题
System.ComponentModel.CancelEventHandler(this.Form1_Closing); private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
// Hide the form...
this.Hide();
// Cancel the close...
e.Cancel = true;
}
{
const int WM_SYSCOMMAND = 0x0112;
const int SC_CLOSE = 0xF060;
if (m.Msg == WM_SYSCOMMAND && (int) m.WParam == SC_CLOSE)
{
this.WindowState = FormWindowState.Minimized;
return;
}
base.WndProc(ref m);
}
{
const int WM_SYSCOMMAND = 0x0112;
const int SC_CLOSE = 0xF060;
if (m.Msg == WM_SYSCOMMAND && (int) m.WParam == SC_CLOSE)
{
this.Visible = false; //隐藏。
return;
}
base.WndProc(ref m);
}
public const int WM_SYSCOMMAND=0x112;
public const int SC_CLOSE=0xF060;
protected override void WndProc(ref Message m)
{
if( m.Msg == WM_SYSCOMMAND )
{
if( m.WParam.ToInt32() == SC_CLOSE || m.WParam.ToInt32() == SC_MINIMIZE )
{
this.Visible = false;
return;
}
}
base.WndProc (ref m);
}
protected override void Dispose( bool disposing )
{
this.Hide();
}