Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 运行时生成控件的DockStyle填充_C#_Winforms_Controls_Dock - Fatal编程技术网

C# 运行时生成控件的DockStyle填充

C# 运行时生成控件的DockStyle填充,c#,winforms,controls,dock,C#,Winforms,Controls,Dock,我正在尝试做一些非常简单的事情,这在WinC窗体中给我带来了巨大的问题。我在一个标签页上有两个分组框。一个停靠在右侧,一个停靠在底部。我在System.Windows.Forms.DataVisualization.Charting页面上还有一个图表。此图表将停靠。请填充页面上的剩余空间 我首先遇到的问题是,图表隐藏在两个分组框后面,仍然停靠在整个页面中。然而,我发现我可以通过使用BringToFront或对文档大纲顺序进行重新排序来解决这个问题,然后图表正确对接,并且没有与页面上的任何其他控件

我正在尝试做一些非常简单的事情,这在WinC窗体中给我带来了巨大的问题。我在一个标签页上有两个分组框。一个停靠在右侧,一个停靠在底部。我在System.Windows.Forms.DataVisualization.Charting页面上还有一个图表。此图表将停靠。请填充页面上的剩余空间

我首先遇到的问题是,图表隐藏在两个分组框后面,仍然停靠在整个页面中。然而,我发现我可以通过使用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);

不要停靠它。锚定它:

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不会按预期的方式进行。