Я пытаюсь изменить z-порядок для какой-то закрепленной панели в дизайнер VS2010. Однако каждый раз, когда я сохраняю конструктор, закрываю его и снова открываю, z-порядок возвращается к тому, каким он был до того, как я его изменил.
Я пробовал использовать схему документа и контекстное меню SendToBack. но оба ведут себя одинаково. Я также заметил, что в другом решении, где он работает, файл .designer.cs не работает. На самом деле t изменится (я предполагал, что порядок добавления элементов управления будет определять z-порядок).
Есть ли другой способ сделать это? Я действительно не хочу делать это во время выполнения ...
EDIT
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 находится сзади неправильно, как будто он должно быть.
ОБНОВЛЕНИЕ
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);