我试图在VS2010设计器中更改某些停靠面板的Z顺序。但是,每次我保存设计器,将其关闭并重新打开时,z顺序都恢复为更改之前的状态。
我尝试使用文档大纲和SendToBack上下文菜单,但两者的行为方式相同。我还注意到,在另一个可行的解决方案中,.designer.cs文件实际上并未更改(我假设控件的添加顺序将决定z顺序)。
我还有其他方法可以做到这一点吗?我真的不想在运行时执行此操作...
编辑
this.mainPanel.BackColor = System.Drawing.SystemColors.Control;
this.mainPanel.Controls.Add(this.pnlRangeSelector);
this.mainPanel.Controls.Add(this.headerAndFooterRowCounts);
pnlRangeSelector具有Dock.Top
headerAndFooterRowCounts具有Dock.Right
但是,当渲染时,headerAndFooterRowCounts占据其父面板的整个右侧,而pnlRangeSelector占据Left的一部分。
这向我暗示了pnlRangeSelector并没有像预期的那样正确地位于后面。
更新
int i = 0;
String output = String.Empty;
foreach (var c in this.mainPanel.Controls)
{
if (c == pnlRangeSelector) { output += "RangeSelector at : " + i.ToString() + "\r\n"; }
else if (c == this.headerAndFooterRowCounts) { output += "HeaderAndFooter at : " + i.ToString() + "\r\n"; }
i++;
}
MessageBox.Show(output);
似乎顺序始终是RangeSelector = 0,HeaderAndFooter =1。即使在此之前我调用了以下命令:
this.mainPanel.Controls.SetChildIndex(this.pnlRangeSelector, 1);
this.mainPanel.Controls.SetChildIndex(this.headerAndFooterRowCounts, 0);
最佳答案
控件添加到父级控件集合的顺序决定了z顺序。因此,解决此问题的最佳方法(AFAIK)是备份设计器文件,然后编辑将控件添加到集合中的顺序
如果需要帮助,请发布代码。
关于c# - VS2010 Designer Z顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6137514/