微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

VS2010 Designer Z顺序

如何解决VS2010 Designer Z顺序

| 我正在尝试更改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占据左侧的部分。 这向我暗示了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)是备份设计器文件,然后编辑将控件添加到集合中的顺序 如果需要帮助,请发布代码。     ,我遇到了类似的问题,发现问题出在Designer代码中。在我的基本表单中,caseHeader停靠在顶部。然后,我添加了formInstructions并将其停靠在顶部。因此,我的基地在caseHeader下有formInstructions。这是所需的外观。 在派生形式中,外观是相反的。我研究了停靠,自动调整大小,z顺序等-都无济于事。 最终,我发现Designer正在更改各种控件的子级索引。这是我在Designer代码中解决此问题的方法:
//this.Controls.SetChildIndex(this.caseHeader,0);
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。