Panel.Dock填充忽略其他Panel.Dock设置

如果您在表单上创建面板并将其设置为Dock = Top并放置另一个面板并设置其Dock = Fill,则可能会填充整个表单,而忽略第一个面板。 更改标签顺序不做任何事情。


停靠布局取决于兄弟控制的顺序 。 控件停靠在“按钮”上,因此集合中的最后一个控件首先停靠。 停靠控件只考虑以前停靠的兄弟姐妹的布局。 因此,Dock = Fill的控件应该是兄弟顺序中的第一个(顶部),如果您希望它考虑其他停靠控件。 如果它不是第一个控件,则早期的控件将与其重叠。

这可能会造成混淆,因为兄弟顺序不一定与视觉顺序相同,并且兄弟顺序在设计视图中并不总是显而易见的。

文档大纲窗口(查看 - >其他窗口 - >文档大纲)为控制层次和顺序提供了有用的树视图,并允许您更改控件的同级顺序。

您还可以通过上下文菜单直接在设计器中更改兄弟顺序 - >将其置于前面/发回,这会将控件移动为兄弟姐妹的第一个或最后一个。 这些菜单标签可能有点令人困惑,因为实际效果取决于布局模型。

使用固定位置的控件时,2D位置与兄弟顺序无关,但当控件重叠时,控件中最早的控件将位于“顶部”,隐藏部分兄弟姐妹。 在这种情况下前置/后送是有道理的。

在流程或表格布局面板中,创建顺序决定了控件的可视顺序。 没有重叠的控件。 因此,将前/后送到真正意味着按照控件的顺序进行首次或最后一次。

使用对接布局时,由于它决定了以何种顺序计算对接,所以前置/后送可能更令人困惑,因此,填充对接控件上的“前置”会将控件置于父对象的中间,考虑到所有边缘停靠的控制。


用Dock = Fill在面板上单击鼠标右键,然后单击“置于前面”。

这使得这个控件最后被创建,它考虑了同一容器中其他控件的Dock设置。


另一个更清洁的选择是使用TableLayout控件。 为您的顶部码头设置一行所需的高度,另一行为您的底部填充100%。 将两个面板都设置为Fill,然后就完成了。

(但是,TableLayout确实需要一些习惯。)

链接地址: http://www.djcxy.com/p/61985.html

上一篇: Panel.Dock Fill ignoring other Panel.Dock setting

下一篇: Getting lot of ANR using Accessibility service in android