January 27th, 2010

C#限制Winform窗体尺寸的问题

Learning, by 木公.

在c/c++里可以通过WM_GETMINMAXINFO消息限制窗体在拖动改变大小时最小尺寸和最大尺寸,可是这个方法在C#里是无法使用的。

在C#里可以绑定窗体拖动事件,然后在事件方法里强制最小或最大Size。

const int MinWidht=300;
const int MinHeith=300;
const int MaxWidth=600;
const int MaxHeith=600;
private void Form1_Resize(object sender, EventArgs e)
{
     if (this.Width > MaxWidth) this.Width = MaxWidth;
     if (this.Height > MaxHeight) this.Height = MaxHeight;
     if (this.Width < Minwidth) this.Width = MinWidth;
     if (this.Heigth < MinWidth) this.Height = MinHight;
}

老实说,这个方法其实是非常“蠢笨”的,如果窗体控件比较多,在拖动时会发现窗体闪烁的厉害。由于对API不是很熟悉,想从API上下手,可是力不从心。求助于Google、Baidu时搜索到的都是Delphi/C的解决方案,搞不懂为什么C#不提供Constraints属性,这样会省了好多气力。

此问题对我仍是无解中,希望哪天遇到高手解之。

相关日志

Back Top

Responses to “C#限制Winform窗体尺寸的问题”

  1. 为什么不用窗体设计器属性中给出的 maximumsize 和 minimumsize 属性呢?

    • 想到了这个问题,但是没找到这两个属性,眼拙 -_- 。那时候还在想为什么微软没提供类似于Delphi Constraints这种的属性。

  1. No trackbacks yet.

Leave a Reply

Back Top