运行时生成控件的DockStyle填充



我正在尝试做一些非常简单的事情,这会给我在C#窗体中带来巨大的问题。我在一个TabPage上有两个分组框。一个靠右停靠,一个靠底停靠。我在页面上还有一个图表(System.Windows.Forms.DataVisualization.Charting)。这个图表是要停靠的。填充页面上的剩余空间。

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

但是,我试图在运行时将图表添加到页面中,它再次填充整个页面并隐藏在其他控件后面。我该怎么做呢?

编辑:忘了提一下,调用"BringToFront"会抛出一个异常"Width必须大于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);

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

在呈现选项卡页之前,无法设置其z索引。

不要停靠它。改为锚定它:

Chart.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom | AnchorStyles.Top;

编辑:

正如Jon指出的那样:

Chart.BringToFront();
Chart.Dock = DockStyle.Fill;

应该允许文档与表单上的其他控件玩得很好。

我在图表控件上遇到了类似的问题,如果高度设置为零,它就会崩溃。错误消息为"高度必须大于0px"。将停靠从"填充"更改为"无"并设置锚属性将其修复。看起来图表控件中有一个错误,但事实证明很难找到更多信息。。。

我们也遇到了"高度必须大于0px"的问题。事实证明,问题/解决方案是显示设置。将显示大小设置为大于100%会产生DockStyle。填充某些元素会填充整个可用空间,使图表在初始化时的高度为0px。设置锚点而不是使用填充解决了这个问题,但这确实是图表控制中的一个错误。

我能够解决这个问题,并通过将图表的最小大小设置为10,10来保持我的dock设置为填充。

将Dockstyle设置为None可以加载表单,但我确实需要对一些图表使用填充停靠样式。我通过在设计器中设置myChart.Dock=DockStyle.None,然后在代码中的Form.Load事件末尾设置myChart.Dock=DockStyl.None来解决这个问题。现在程序加载时没有出现错误,图表大小也正确。

相关内容

  • 没有找到相关文章

最新更新