vb动态控件

xguoz 2000-04-11 08:12:00
在vb中,使用如下代码可以实现在运行中动态添加控件的目的:

dim ctlMyControl as control

set ctlMyControl=form1.controls.add("ctlTest", "Test")

但是在添加出错时,ctlMyControl会返回nothing,但ctlTest却添加进去了(可通过
form1.controls.count判断),而这样,新添加的控件无法得到指针,无法访问,而使用remove方法也无法删除。由于在某些情况下容器控件同时只能容纳一个控件,使得容器没法继续使用。现请教各位,如果充分考虑情况,错误处理代码该如何编写,可以防止如上的内存泄漏事件发生?
...全文
105 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xguoz 2000-04-13
  • 打赏
  • 举报
回复
补充内容:
1,动态添加的控件已经注册,所添加到的是一个充当容器的usercontrol
2,添加的错误并不是每次都发生,大部分情况下可以正常添加,出错后也可以捕捉到错误,问题是错误处理时无法回收内存和容器再次使用权

希望各位能再出出主意
always 2000-04-12
  • 打赏
  • 举报
回复
ctlTest可能没有先注册
Un1 2000-04-11
  • 打赏
  • 举报
回复
申明
dim ctlMyControl as Object

如需事件处理,可以申明:

dim ctlMyControl as VBControlExtender

你可以在程序使用New Form来使用窗口,而不要用VB默认的Form1, Form2等等,例如:

作好Form1后,
Dim f As Form1

Set f = New Form1

Load f

用完后:
Unload f
Set f = Nothing

另外把所有有关动态创建控件的过程写在Form_Init事件中,而不是Form_Load中,这样可以在New Form过程中捕获到错误进行相应处理。





1,451

社区成员

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

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