我正在嘗試更改VS2010設計器中某個停靠面板的z順序。但是,每次我保存設計師時,關閉它並重新打開它,z順序已經恢復到它改變之前的狀態。VS2010 Designer Z-Order
我試過使用文檔大綱和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則是左側部分。
這表明pnlRangeSelector在背後不像它應該的那樣正確。
UPDATE
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);
控件已按正確順序添加(背景面板第一個,前景面板下一個)。 – Ian 2011-05-26 12:12:18
聲明或添加到集合?你能發佈代碼嗎? – 2011-05-26 12:14:04
添加了設計者的添加代碼。 – Ian 2011-05-26 12:18:44