其实说起来也不复杂,就是直接重写Windows窗体处理消息的过程,即WndProc方法。在这个方法里面,我们检测窗体大小恢复以及在非客户区域双击鼠标左键的消息,不处理这两个消息。这样就可以实现在窗体画面不闪动的条件下也保持其大小了。完整Form.cs文件如下:
之所以要在Restore消息里面检测是否当前状态是最大化,是因为如果不检测的话,那么在最小化该窗体后就无法再打开了,因为Restore消息都被屏蔽掉了。
还有很重要的一点就是:必须要将窗体的FormBorderStyle设置为FixedSingle,当然只要是Fixed的,不一定要是FixedSingle。因为如果不是Fixed,那么可以通过在任务栏上右键菜单里面的大小操作来改变窗体的大小。
也许很多高手都有其他的方法,或者觉得我这个方法也有问题。欢迎指正,提前感谢了!