关于vb 释放动态添加控件数组 请教高手!

jeffqi88 2009-06-29 12:12:50
我在容器内先预置控件数组 ,在运行时通过load frame(1)来动态添加
删除我采用 DestroyWindow frame(1).hwnd

问题在于我用frame.count计算时发现 ,计算出来结果是 已删除 和 新添加 的控件总数
比如 我第一次 添加2个 然后删除 第二次 添加3个 用count计算 总数是6个(1个是设计时已添加)

我如何能够计算出 当前控件数组总数 ,不包含以删除的!谢谢了
...全文
277 6 打赏 收藏 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyserver 2009-06-29
  • 打赏
  • 举报
回复
必须使用unload删除,使用DestroyWindow绕过了VB的内部数组调整,故计数错误,比如添加一个frame控件,控件名为frame1,设置Index为0,这时,frame1.count应该为1,添加以下代码:
Private Sub cmbAdd_Click()
Load Frame1(1)
Frame1(1).Visible = True
Frame1(1).Move Frame1(0).Width + 10
Debug.Print Me.Frame1.Count
End Sub

Private Sub cmdRemove_Click()
Unload Frame1(1)
Debug.Print Me.Frame1.Count
End Sub

Private Sub Form_Load()
Me.ScaleMode = vbPixels
Debug.Print Me.Frame1.Count
End Sub
jeffqi88 2009-06-29
  • 打赏
  • 举报
回复
我知道为什么了 我的控件数组里面还有控件 unload 必须先卸载里面控件 才能再卸载控件数组。
只有unload 才能用count 计算出正确的控件数目
谢谢 mhm0517 原来不行的话 只有按你说的这样了作了
mhm0517 2009-06-29
  • 打赏
  • 举报
回复
如果都不行,那就这样了.

设一个全局.
每load一个.就+1
每 DestroyWindow frame(1).hwnd 一次. 就-1
jeffqi88 2009-06-29
  • 打赏
  • 举报
回复
晕 unload 无法删除 已经试过。
msgbox frame.count 显示结果为 删除 和未删除总数 有什么办法统计出未删除得总数 谢谢
Alco2007 2009-06-29
  • 打赏
  • 举报
回复
用unload删除
mhm0517 2009-06-29
  • 打赏
  • 举报
回复
MsgBox frame(1).Count '取得总数.

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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