Groupbox子控件的限制?

时间:2018-12-24 15:23:19

标签: winforms panel groupbox

我正在动态创建控件并将其添加到GroupBox。 GroupBox包含一个填充GroupBox的面板(父面板)。 在此父面板中,我有多个子面板。 在我将108个子面板添加到“父面板”之前,所有外观和工作均符合预期。当添加此数量(或更多)的子面板时,每个子面板突然变得丑陋(一些子面板周围出现随机的黑色边框,滚动到底部会在所有位置显示黑色“斑点”)。我什至可以看到我的Windows桌面突然开始显示在它上面!!! 可以添加到GroupBox的面板/控件的数量是否有限制?

我的规格是Windows 10 Pro,Visual Studio 2017,.NET 4.7、16gig ram。 我尝试了各种排列方式(假设第108个条目已损坏并跳过了该步骤,并尝试以相反的顺序添加子面板)。 似乎不是要添加到面板中的内容,而是项目的数量。当我将子面板拆分为2个groupBoxes时,它工作正常。但是我想让一个groupBox拥有所有数据。

2 个答案:

答案 0 :(得分:1)

是的,有一个限制,该限制适用于整个应用程序会话。
每个控件都是GDI Object,限制很远,如果您通过限制,则应用程序的体系结构有问题,并且会引发异常。
而不是使用{{1 }}可以使用System.Drawing.Graphics class来节省资源。

来自MSDN(GDI Objects ):

  

每个会话最多只能有65,536个GDI句柄。   但是,每个可以打开的GDI句柄的最大数量   会话通常较低,因为它受可用内存的影响。

请注意,您可以检查使用Windows任务管理器创建的GDI对象的数量,并添加以下列: enter image description here

答案 1 :(得分:0)

结果证明,父面板是一个自定义面板,具有呈现子控件的自定义方式。它试图以一种奇怪的方式自动计算面板高度,从而产生奇怪的输出。但是,我发现了另一个与面板相关的问题,我将发布