C# · 12月 23, 2021

c# – DockStyle填充RunTime生成的控件

我正在尝试做一些非常简单的事情,这给了我C# Winforms的巨大问题.我在TabPage上有两个组框.一个停靠在右边,一个停靠在底部.我在页面上也有一个图表(System. Windows.Forms.DataVisualization.Charting).此图表是Dock.Fill页面上的剩余空间.

我第一次遇到图表隐藏在两个组框后面并仍然停靠填充整个页面的问题.但是,我发现我可以通过使用“BringToFront”(或重新排序文档大纲顺序)解决这个问题,然后图表正确停靠,并且没有与页面上的任何其他控件重叠.

但是,我试图在运行时向页面添加一个图表,它再次填充整个页面并隐藏在其他控件后面.我怎样才能做到这一点?

编辑:
忘记提及,调用“BringToFront”会抛出异常“Width必须大于0px”.

chart_TapChart = new Chart();chart_TapChart.Dock = DockStyle.Fill;chart_TapChart.BringToFront();Group@R_894_2419@ gp1 = new Group@R_894_2419@();gp1.Dock = DockStyle.Right;Group@R_894_2419@ gp2 = new Group@R_894_2419@();gp2.Dock = DockStyle.Bottom;this.Controls.Add(chart_TapChart); <–this refers to tabpagethis.Controls.Add(gp1);this.Controls.Add(gp2);解决方法 事实证明,您必须等到已经查看TabPage(您必须以编程方式调用yourtabpage.select()),然后搜索该标签页上的控件,找到该图表,并在其上调用“BringToFront”.在将控件添加到页面之前,可以设置Dock.Fill.

在呈现标签页之前,您无法设置其z-index.