动态追加2万以上控件时,出错,求解。

kinlin 2013-10-29 06:04:08
因为要做一个自定义表格控件,所以需要动态做成大量控件,当我动态追加2万个以上的控件时,系统报错

提示:Error creating window handle.(创建窗口句柄时出错)

好像系统最多让我创建1万个,如果再多需要修改注册表,但即使修改注册表也最多能创建18000个
如何解决上面的问题啊,还请高手赐教。
...全文
263 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kinlin 2013-10-30
  • 打赏
  • 举报
回复
恩,u012592437 和sp1234 说的有道理,我也正想往这方面转
红衣老大 2013-10-29
  • 打赏
  • 举报
回复
其实想一想 总要有个上限 不是1w 也可能是 10w 总会有人遇到 上限的问题 不能无休止下去 对吧
  • 打赏
  • 举报
回复
引用 3 楼 u012592437 的回复:
例如你的表格有10万行,但用户不可能同时看到10万行。只能看到可视区域的一些行。例如可视区域就只有50行,则你只需要创建50行。
是这样的。 人家大公司做的数据绑定控件,基本上都会处理行的“滚出和滚入”事件。因为当行混出可见区域之后,出发了“滚出”事件之后,就会把控件复用给“滚入”的数据行,而不会创建新的控件。
capricciosoft 2013-10-29
  • 打赏
  • 举报
回复
不应该创建那么多控件。你应该只创建可视化区域内的控件。 即使系统自带的控件,也不能直接处理那么多的行数。否则就不会有ListView的虚拟模式(VirtualMode)了。 例如你的表格有10万行,但用户不可能同时看到10万行。只能看到可视区域的一些行。例如可视区域就只有50行,则你只需要创建50行。 你需要管理可视化区域、当前行的位置和总行数。用户改变浏览范围(拖动滚动条)或可视化区域大小时,重新计算需要显示的内容。 规定只能正行滚动,可能算法会更加简化。(无论怎样调整大小,可视化的第一行的y总是0,不会出现看到前面半行的情况) 对于内部的控件,缺少时补充,多余时删除。但不应直接去清除后逐一new。你需要做的是对各控件的属性进行更新。 此外,你可能还要使用双缓冲技术减少闪烁。
  • 打赏
  • 举报
回复
因为要做一个自定义表格控件,所以要增加2万以上的控件? 我觉得你应该把那些重复的控件直接用画的draw,而不是加载N多控件。画出来的格子或说假控件也可以通过随便点击的坐标来确认哪个被点击了。
Andy__Huang 2013-10-29
  • 打赏
  • 举报
回复
能说出你要建什么控件吗? 加载这么多个控件,你应该考虑此方法可能不太好?或许换个解决方案更好。

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧