当前位置: 代码迷 >> C# >> 关于winfrom 设置maximumSize最大化状态下移动时变窗口变小的有关问题
  详细解决方案

关于winfrom 设置maximumSize最大化状态下移动时变窗口变小的有关问题

热度:333   发布时间:2016-04-28 08:40:39.0
关于winfrom 设置maximumSize最大化状态下移动时变窗口变小的问题
情况是这样的,我设置了窗口的maximumSize 大小 1440*860,和minimumSize大小 1024*768 , 在最大化时窗口变为 1440*860 并在屏幕左上显示,当移动窗口时窗体会变为1024*768 的大小,给人用户体验不好,有什么办法能在移动时使窗口不变化他的大小吗?有相关代码更好
------解决思路----------------------
额,我表示这是win7/vista以上版本系统的一个特性,如果你不需要可以手动关闭他
关闭方法:http://www.windows7en.com/Win7/23408.html

当然关闭后,你就享受不到,移动到屏幕边缘自动最大化的功能了。也享受不到在已经在最大化下还能拖动得功能了(已经最大化还能往那里拖动??)
------解决思路----------------------
哈哈,帮你想了个办法,测试效果很好,拦截最大化按钮消息,对其进行处理

protected override void WndProc(ref Message m)
{
//点击最大化按钮
if (m.Msg == 0x112 && m.WParam.ToInt32() == 0xF030)
{
if (this.Size == this.MaximumSize)
{
this.Size = this.MinimumSize;
}
else if (this.Size == this.MinimumSize)
{
this.Size = this.MaximumSize;
}
else
{
this.Size = this.MaximumSize;
}
//相对屏幕工作区居中打开窗口
this.SetBounds((Screen.GetWorkingArea(this).Width - this.Width) / 2, (Screen.GetWorkingArea(this).Height - this.Height) / 2, this.Width, this.Height, BoundsSpecified.Location);
return;
}
base.WndProc(ref m);
}
  相关解决方案