C#WinForms: 我正在设计我的表单,我有几个TableLauots。所以我设计了我的第一个tablelayout,把它扔到面板上并设置Dock-> Top ...然后我设计我的第二个并做同样的设置Dock-> Top,它再次进入Top并且好,它放置在前面的那个顶部...我设计了第三个并且设置了它的dock.top并且它在第二个下面是第一个...但我不知道第四个的差异是什么时候我设置了它的dock.top,它改变了其他三个的顺序,并将它们放在它们之间的某些位置,它不会放在第三个之间......任何想法我应该注意什么?
答案 0 :(得分:28)
这取决于您将这些控件添加到其容器的顺序。之前添加的控件将是顶级控件,依此类推......
要修复它,“剪切”第四个控件并再次“粘贴”到容器中,它将占据理想的位置。
另一种解决方法是修改设计器文件代码,重新排序将这些控件添加到容器中。
答案 1 :(得分:16)
右键单击控件并选择“发送到后面”或“置于前面”,或使用“文档大纲”窗口重新排列项目的Z顺序。在使用大量控件创建WinForms时,Document Outline有很多帮助。
答案 2 :(得分:8)
停靠布局基于它们添加到容器的顺序。
我通常会转到 *。Designer.cs 文件并修改 InitializeComponent()方法,以手动重新排序控件添加到容器的方式。< / p>
this.Controls.Add(this.panel1);
this.Controls.Add(this.panel4);
this.Controls.Add(this.panel3);
this.Controls.Add(this.panel2);
此订单在显示屏上相反
答案 3 :(得分:6)
您必须在“文档大纲”窗口中组织控件的顺序(VIEW - &gt; Other Windows - &gt; Document Outline(Ctrl + W,U))。在设计模式下选择您的表单,您将在树视图中看到所有组件。使用顶部的箭头选择所需的顺序。
它比剪切和过去更好,因为它可以避免丢失绑定回调。
答案 4 :(得分:0)
您可以更改控件的顺序以移至特定索引
containerPanel.Controls.SetChildIndex(Control, n); //sets control to be the Nth element from the bottom