在开发windows form 程序时,我经常会使用DOCK属性来设置控件的靠边方式。使用起来非常方便,因为它会帮你自动定位,不管窗口形状发生任何变化,所控件的控件也会自动进行相应的调整。
但是,当我在同一个form中给多个控件设置dock属性时,一个问题就出现了:
例1: form中有两个panel控件,panel1和panel2。我把panel1的dock属性设为Left,把panel2的dock属性设为Fill。我希望panel1能靠左边框显示,panel2则填满剩下的区域。但是运行时发现panel2填满了整个form,而panel1则正常靠左显示,却把部份panel1的内容给覆盖掉了。
例2 : form中有一个panel(dock属性为Left)和一个statusbar(dock属性为bottom).正常希望statusbar能紧靠底部,完整显示在form中(如图1),但运行结果往往是statusbar只显示在panel1以外的区域中(如图2)。
图1
图2
这个问题困扰了我很久,好几次使我的程序无法继续下去。在 msdn中找了好久,最后终于在Control.Dock下找到了这样的一句话: 控件依照 Z 顺序停靠。
终明白了,原来离form层次越近的控件,停靠的优先级越高。层越高的控件会在下面层次停靠后所剩下的空间中再进行停靠动作。以上两个例子的解决办法也就变得很简单了:在界面设计时,选中例1中的panel1和例2中的statusbar两个控件,然后再在右键菜单中进行“置于底层”的操作,一切问题都迎刃而解了。