双击窗体标题栏,使整个窗体缩成只剩下标题栏 在vs2005 C#中,如何实现以下功能:双击窗体标题栏,使整个窗体缩成只剩下标题栏;再双击一遍则恢复。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 this.Size= new Size(this.Width,System.Windows.Forms.SystemInformation.ToolWindowCaptionHeight); 双击时执行//记录双击前的height=this.Heightheight=this.Height;this.Height=0;单击时执行this.Height=height; 双击窗体标题栏由操作系统控制,所以你只能听Resize事件,判断WindowStatus,然后设置窗体的大小。 int WM_NCLBUTTONDBLCLK = 0xA3; int h = 100; protected override void WndProc(ref Message m) { if (m.Msg == WM_NCLBUTTONDBLCLK) { if (this.Height < 30) { this.Height = h; } else { h = this.Height; this.Height = 0; } return; } base.WndProc(ref m); } 关键是如何捕获双击标题的事件当双击标题,窗体会收到WM_NCLBUTTONDBLCLK消息,处理之即可参考如下代码:int oldHeight = 0;protected override void WndProc(ref Message m){ const int WM_NCLBUTTONDBLCLK = 0x00A3; switch (m.Msg) { case WM_NCLBUTTONDBLCLK: if (oldHeight <= 0) { oldHeight = ClientSize.Height; ClientSize = new Size(ClientSize.Width, 0); } else { ClientSize = new Size(ClientSize.Width, oldHeight); oldHeight = 0; } return; } base.WndProc(ref m);} vs2008各大版本的区别 求个正则表达式 Pinvoke中资源传递的问题 关于参数传递的问题!!! /*****更新到数据库中数据约束的问题******/ 如何合并两个解决方案?? 如何取出Hashtable中的所有Key?[在线等] 请教如何调用DataList内的子控件 C# 请问如何回收单例中的一个LIST占用的内存 C#如何连接oracle? 请教有关活动目录的问题 跟帖有分!大侠们! 字母如何转换成Virtual-Key Codes ?
height=this.Height;
this.Height=0;
单击时执行this.Height=height;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_NCLBUTTONDBLCLK)
{
if (this.Height < 30)
{
this.Height = h;
}
else
{
h = this.Height;
this.Height = 0;
}
return;
}
base.WndProc(ref m);
}
当双击标题,窗体会收到WM_NCLBUTTONDBLCLK消息,处理之即可
参考如下代码:
int oldHeight = 0;
protected override void WndProc(ref Message m)
{
const int WM_NCLBUTTONDBLCLK = 0x00A3;
switch (m.Msg)
{
case WM_NCLBUTTONDBLCLK:
if (oldHeight <= 0)
{
oldHeight = ClientSize.Height;
ClientSize = new Size(ClientSize.Width, 0);
}
else
{
ClientSize = new Size(ClientSize.Width, oldHeight);
oldHeight = 0;
}
return;
}
base.WndProc(ref m);
}