我试图做一些非常简单的事情,这给了我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);
答案 0 :(得分:4)
原来,你必须等到TabPage已被查看(你必须以编程方式调用yourtabpage.select()),然后搜索该标签页上的控件,找到图表,并在其上调用“BringToFront” 。在将控件添加到页面之前,您可以设置Dock.Fill。
在呈现标签页之前,您无法设置其z-index。
答案 1 :(得分:2)
不要停靠它。反而将其锚定:
Chart.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom | AnchorStyles.Top;
编辑:
正如乔恩指出的那样:Chart.BringToFront();
Chart.Dock = DockStyle.Fill;
应该允许doc与表单上的其他控件一起使用。
答案 2 :(得分:1)
我在图表控件中遇到了类似的问题,如果高度设置为零,它会崩溃。错误消息是“高度必须大于0px”。将对接从“填充”更改为“无”并设置锚属性而是修复它。看起来像图表控件中的错误,但发现更多信息证明是困难的......
答案 3 :(得分:1)
我们遇到的问题&#34;身高必须大于0px&#34;也。事实证明问题/解决方案是显示设置。将显示大小设置为大于100%的任何值会导致某些元素的DockStyle.Fill填充整个可用空间,使初始化时图表的高度为0px。设置Anchors而不是使用Fill可以解决问题,但这确实是图表控件中的一个错误。
答案 4 :(得分:1)
我能够解决这个问题并通过将图表最小尺寸设置为10,10来保持我的底座设置。
答案 5 :(得分:0)
将Dockstyle设置为None允许加载表单,但我确实需要为某些图表使用Fill停靠样式。我通过在设计器中设置myChart.Dock = DockStyle.None,然后在代码中的Form.Load事件的末尾设置myChart.Dock = DockStyle.None来解决了这个问题。现在程序加载时没有错误,图表的大小正确。