C# 运行时生成控件的DockStyle填充
我正在尝试做一些非常简单的事情,这在WinC窗体中给我带来了巨大的问题。我在一个标签页上有两个分组框。一个停靠在右侧,一个停靠在底部。我在System.Windows.Forms.DataVisualization.Charting页面上还有一个图表。此图表将停靠。请填充页面上的剩余空间 我首先遇到的问题是,图表隐藏在两个分组框后面,仍然停靠在整个页面中。然而,我发现我可以通过使用BringToFront或对文档大纲顺序进行重新排序来解决这个问题,然后图表正确对接,并且没有与页面上的任何其他控件重叠 但是,我试图在运行时向页面添加一个图表,它再次填充整个页面并隐藏在其他控件后面。我怎样才能让这一切顺利进行 编辑: 忘了提及,调用BringToFront将抛出异常宽度必须大于0pxC# 运行时生成控件的DockStyle填充,c#,winforms,controls,dock,C#,Winforms,Controls,Dock,我正在尝试做一些非常简单的事情,这在WinC窗体中给我带来了巨大的问题。我在一个标签页上有两个分组框。一个停靠在右侧,一个停靠在底部。我在System.Windows.Forms.DataVisualization.Charting页面上还有一个图表。此图表将停靠。请填充页面上的剩余空间 我首先遇到的问题是,图表隐藏在两个分组框后面,仍然停靠在整个页面中。然而,我发现我可以通过使用BringToFront或对文档大纲顺序进行重新排序来解决这个问题,然后图表正确对接,并且没有与页面上的任何其他控件
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);
不要停靠它。锚定它:
Chart.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom | AnchorStyles.Top;
编辑:
正如乔恩所指出的那样:
Chart.BringToFront();
Chart.Dock = DockStyle.Fill;
应该允许文档与表单上的其他控件很好地配合。结果是,您必须等待TabPage已被查看,然后通过编程调用您的TabPage。选择,然后搜索该TabPage上的控件,找到图表,并在其上调用BringToFront。在将控件添加到页面之前,可以设置Dock.Fill
在呈现tabpage之前,无法设置其z索引 我的图表控件也有类似的问题,如果高度设置为零,它就会崩溃。错误消息为高度必须大于0px。将停靠从“填充”更改为“无”,并改为设置锚点属性来修复它。看起来像是图表控件中的错误,但查找更多信息很困难…我们遇到的高度问题也必须大于0px。事实证明,问题/解决方案在于显示设置。将显示大小设置为大于100%的任何值都会导致DockStyle。填充某些元素会填充整个可用空间,使图表在初始化时的高度为0px。设置锚点而不是使用填充解决了这个问题,但这确实是图表控制中的一个错误。我能够解决这个问题,并通过将图表的最小大小设置为10,10来保持我的停靠设置为填充。将Dockstyle设置为None允许加载表单,但我确实需要对一些图表使用填充停靠样式。通过在设计器中设置myChart.Dock=DockStyle.None,然后在代码中的Form.Load事件末尾设置myChart.Dock=DockStyle.None,我解决了这个问题。现在程序没有错误加载,图表的大小也适当。我已经尝试过了,它并没有填补我想要的空白。Dock.Fill会更理想。Dock.Fill将不起作用,因为它将始终填充其父控件并溢出其他控件。将左侧、顶部、宽度和高度设置为您希望它使用的空间,然后将其锚定。Coltech-Dock.Fill可以与停靠在顶部/底部/左侧/右侧的其他控件配合使用。Z顺序决定了其工作方式。如果图表在上面,它不会填满整个容器。约翰,我不知道!所以只要调用Chart.BringToFront和DockStyle.Fill就行了?我不想硬编码宽度和高度。页面的大小将发生变化,添加额外的代码来改变页面的大小对于我所做的工作来说是过分的。码头。填充似乎是适合我这种情况的方法。不过还是要谢谢你的回答。这是代码的要点。从字面上说,只是简单明了的东西。此代码包含在选项卡页中。TabPage被添加到TabController中。提供了一些好的建议…只是有一个类似的问题。以编程方式设置为DockStyle的面板。除非在TabPage被设置为TabControl上的SelectedTab属性之后设置DockStyle,否则填充TabPage不会按预期的方式进行。