代码改变世界

当Dock遇上Z-Index

2011-09-21 21:24 Format Deng 阅读(...) 评论(...) 编辑 收藏

今天工作中需要在一个窗体上放置3个控件,其中每一个设置为不可见后,后面的控件要前移,补到隐藏控件的位置,马上想到Dock属性可以完成这个工作了。

我将3个控件Dock属性全部设置为Left,嗯,不错,有效果,确实都向左靠了,诶,不对,怎么顺序变化了呢?设置Dock之后也不能靠拖动改变顺序了,怎么办呢?祭出谷歌大神搜索一下,有人提到

Dock之后控件的次序默认是按照控件被添加到容器的先后顺序来的

如果要修改Dock后控件的显示顺序的话可以设置Z-index

当控件停靠到其容器的一条边缘时,调整容器的大小时,始终使控件与那条边缘对齐。如果多个控件停靠到一条边缘,那么这些控件将按照它们的 Z 顺序并排出现,控件在 Z 顺序中的位置越高,距离容器边缘就越远。

而WinForm中控件没有ZIndex属性,就只有通过设计器的右键菜单的置于顶层和置于底层或者BringToFront和SendToBack来调整ZIndex,然后再设置Dock属性,控件即会按照Z-Index从下到上的顺序依次Dock。