如果您在表单上创建一个面板并将其设置为Dock = Top并放置另一个面板并设置其Dock = Fill,则它可能会填充整个表单,而忽略第一个面板。更改制表符顺序无济于事。

最佳答案

对接布局取决于兄弟控件的顺序。控件停靠在“按钮上”,因此集合中的最后一个控件停靠在第一个上。停靠控件仅考虑了先前停靠的 sibling 的布局。因此,如果希望Dock = Fill的控件考虑其他停靠的控件,则该控件应在同级控件中位于第一个(顶部)。如果不是第一个控件,则较早的控件将与它重叠。

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

文档大纲窗口( View ->其他Windows->文档大纲)提供了有关控件层次结构和顺序的有用树状 View ,并允许您更改控件的同级顺序。

您还可以直接在设计器中通过上下文菜单-> Bring to front/Send back back来更改 sibling 的顺序,这会将控件移动到 sibling 中的第一个或最后一个。这些菜单标签可能会有些困惑,因为实际效果取决于布局模型。

使用固定位置的控件,2D位置与 sibling 顺序无关,但是当控件重叠时,最早的控件将在“顶部”,而在该顺序的后面隐藏部分 sibling 。在这种情况下,向前/向后发送是有意义的。

在流或表布局面板内部,创建顺序确定控件的视觉顺序。没有重叠的控件。因此,向前/向后发送实际上意味着按照控件的顺序进行第一个或最后一个操作。

使用停靠的布局时,“前移/后退”可能会更加令人困惑,因为它确定了对接的计算顺序,因此,在对接控件上“前移”会将控件放置在父级的中间,并考虑所有边缘对接控件。

关于c# - Panel.Dock填充,忽略其他Panel.Dock设置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/154543/

10-11 11:24