DockStyle填充RunTime生成的控件

ImG*_*reg 6 c# controls dock winforms

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

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

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

编辑:忘记提及,调用"BringToFront"将抛出异常"宽度必须大于0px".

chart_TapChart = new Chart();
chart_TapChart.Dock = DockStyle.Fill;
chart_TapChart.BringToFront();
GroupBox gp1 = new GroupBox();
gp1.Dock = DockStyle.Right;
GroupBox gp2 = new GroupBox();
gp2.Dock = DockStyle.Bottom;
this.Controls.Add(chart_TapChart);    <--this refers to tabpage
this.Controls.Add(gp1);
this.Controls.Add(gp2);
Run Code Online (Sandbox Code Playgroud)

ImG*_*reg 5

事实证明,您必须等到 TabPage 已经被查看(您必须以编程方式调用 yourtabpage.select()),然后搜索该标签页上的控件,找到图表,并在其上调用“BringToFront”。在将控件添加到页面之前,您可能已经设置了 Dock.Fill。

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