在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属性,这样会省了好多气力。
此问题对我仍是无解中,希望哪天遇到高手解之。
为什么不用窗体设计器属性中给出的 maximumsize 和 minimumsize 属性呢?
想到了这个问题,但是没找到这两个属性,眼拙 -_- 。那时候还在想为什么微软没提供类似于Delphi Constraints这种的属性。