CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

怎么让一个窗体在点“X”的时候是隐藏,而不是关闭?

楼主fanzai(帆仔)2006-03-04 04:32:21 在 .NET技术 / C# 提问

RT 问题点数:100、回复次数:11Top

1 楼fanzai(帆仔)回复于 2006-03-04 04:47:15 得分 0

是一个子窗体,如果直接关闭,下次就不能show()了,还得重新new。Top

2 楼jiangsheng(蒋晟.Net[MVP])回复于 2006-03-04 06:32:53 得分 50

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;    
  }    
  Top

3 楼kkk_visual(凡事对错先问自己)回复于 2006-03-04 09:09:06 得分 10

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);    
  }Top

4 楼kkk_visual(凡事对错先问自己)回复于 2006-03-04 09:10:47 得分 0

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);    
  }Top

5 楼lidong6(立冬)回复于 2006-03-04 10:41:59 得分 0

二楼正解,其他都是画蛇..Top

6 楼sxlfybb(房客)回复于 2006-03-04 10:42:07 得分 10

我这里正好有一个  
  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);  
  }Top

7 楼TheRule(绝非偶然)回复于 2006-03-04 11:03:56 得分 0

呵呵,二楼Top

8 楼mooddecode1980(心情解码)回复于 2006-03-04 11:46:25 得分 0

:)  
   
   
   
  --Top

9 楼zhouyinhui(我也飘~~过)回复于 2006-03-04 11:49:35 得分 10

二楼是正确的方法,也是通常的方法,除此之外还可以:  
  protected   override   void   Dispose(   bool   disposing   )  
  {  
   this.Hide();  
  }Top

10 楼kingdhy(飞鹰)回复于 2006-03-04 11:54:46 得分 20

看看MSDN,如果把子窗体类型设置成对话框,则点关闭按钮时没有调用Form.Close()事件。Top

11 楼fanzai(帆仔)回复于 2006-03-04 17:10:02 得分 0

按照   jiangsheng(蒋晟.Net[MVP])   说的,达到了我的要的效果。只是我必须判断用户是不是要关闭整个程序,否则子窗口永远不关闭,程序就没办法正常退出。  
   
  kingdhy(飞鹰)   说得听起来应该更好用,但是我没找到,再发个贴问。Top

相关问题

  • 窗体上的“X”(关闭)的问题?
  • 隐藏窗体
  • 关闭窗体
  • 关闭窗体
  • 【菜鸟提问】关于运行时主窗体隐藏,显示登录窗体,登录成功后关闭登录窗体,显示主窗体。
  • c#写的MDI,现在想让子窗体右上脚的关闭按钮也就是X失效或隐藏,如何做?
  • 点击关闭按钮时,只让窗体隐藏而不关闭?
  • 窗体右上角的关闭按钮X如何操作?
  • 关闭MDI窗体
  • 如何隐藏主窗体?

关键词

  • 窗体
  • syscommand
  • wndproc
  • 关闭
  • sc
  • 二楼
  • ref
  • xf060
  • wparam
  • close

得分解答快速导航

  • 帖主:fanzai
  • jiangsheng
  • kkk_visual
  • sxlfybb
  • zhouyinhui
  • kingdhy

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo