我正在创建一个仪表盘应用程序,该应用程序在
每个“项目”都是由 12 个文本框或标签组成的
我的应用程序查询数据库,然后为每个记录创建一个“项目”实例,在将其添加到
在向面板添加约 560 个项目后,我注意到任务管理器中的
我发现 560 * 13(12 个标签加上 UserControl 本身)是 7280。所以突然间我知道了所有对象的来源...
知道 Windows 在放弃之前有 10,000 个 USER 对象限制,我正在尝试找到更好的方法将这些“项目”绘制到
我目前的想法如下:
1. 使用
2. 有一个“项目”的实例,然后对于每个记录,填充实例并使用
所以... 有没有其他建议?
附注:这是一个可缩放的界面,因此我已经排除了“分页”的可能性,因为需要一次查看所有项目。
FlowLayoutPanel
上显示数百个“项目”。每个“项目”都是由 12 个文本框或标签组成的
UserControl
。我的应用程序查询数据库,然后为每个记录创建一个“项目”实例,在将其添加到
FlowLayoutPanel
之前使用数据填充标签和文本框。在向面板添加约 560 个项目后,我注意到任务管理器中的
USER Objects
计数已经上升到约 7300,这比我的机器上任何其他应用程序都要大得多。我发现 560 * 13(12 个标签加上 UserControl 本身)是 7280。所以突然间我知道了所有对象的来源...
知道 Windows 在放弃之前有 10,000 个 USER 对象限制,我正在尝试找到更好的方法将这些“项目”绘制到
FlowLayoutPanel
上。我目前的想法如下:
1. 使用
graphics.DrawText
和 DrawImage
替代许多标签,用户绘制“项目”。我希望这意味着 1 个“项目” = 1 个 USER Object
,而不是 13 个。2. 有一个“项目”的实例,然后对于每个记录,填充实例并使用
Control.DrawToBitmap()
方法来获取图像,然后在 FlowLayoutPanel
(或类似)中使用它。所以... 有没有其他建议?
附注:这是一个可缩放的界面,因此我已经排除了“分页”的可能性,因为需要一次查看所有项目。
TextRenderer
,因为相对于Graphics.DrawString
它的速度较慢。但除此之外,我同意他的最佳方法就是直接将每个数据库行呈现到单个控件上(最好只呈现可见的行)。 - MusiGenesis