END是可以...但. 用起来,不太好..呵呵.只是我感觉面 而以吧.有时程序容易出错 我觉得 楼主所说的可能性是,包含其它窗体,并没有把其它窗体卸载噢! 也可以用:For Each FormName In Forms Unload FormName Next来把,所以有的窗体卸载了!
在form_unload事件中加: set form=nothing
unload后仍在内存中存在,说明有窗体没被关掉,可用以下语句实现: For Each objForm In Forms Unload objForm Set objForm = Nothing Next objForm
For Each objForm In Forms Unload objForm Set objForm = Nothing Next objForm严重同意
不规范的写法: FrmTest.Show 1 规范的写法:Dim ObjForm as New FrmTestObjForm.Show 1Unload ObjForm Set ObjForm = Nothing使用规范写法时就不会占用资源。另外,在主窗口退出后,要用循环语句卸载所有窗口,卸载所用到的所有全局对象及变量。
彻底 UNLOAD ME? 你对UNLOAD ME的能力有所怀疑?你应该对对自己的程序怀疑才对,是你的代码存在漏洞!没有关闭程序,说明你的程序有窗体没有卸载,可能是别的隐藏窗体,也可能就是Me。用End,数据极不安全,但肯定可Kill Me 用For Each虽较安全,但若存在窗体间的循环加载,仍不能卸干净总之一点,你必须找到窗体没卸干净的真正原因,这才是一个好程序的基础,那时再用哪种方法结束都行。
To viena(维也纳nn-实心木头人): 使用不规范的写法(即直接直接用Form名称的话,是系统自动实例化的),在系统自动卸载时,对对象的卸载是不充分的,释放系统资源也不充分。 VB是一种纵容式语言,有时为了方便简单,就造成写法上的不规范。另外,Set ObjForm = New FrmTest 这样的语法对没有基础的初学者来说也不好理解。
如果真只是要卸载某一个指定的窗口,可以这样. Dim iFrom As Form For Each iform In Forms If iFrom.Text = "想关闭的窗口TEXT属性段字符串" Then Unload iform Next如果要卸载所有窗口,稍微改变点就可以了 Dim iFrom As Form For Each iform In Forms Unload iform Next但按你的话看来 //怎样才能彻底 UNLOAD ME?? //我写了 UNLOAD ME,然后在任务管理器的应用程序里还会存在,这样就占用系统资源? 应该是你要结束这个进程,所以建议使用 End。
不好意思,搞错分区了,当这是vb.net分区了vb6里的From.Caption 等价于 Vb.net里的From.Text第一段改成 Dim iFrom As Form For Each iform In Forms If iFrom.Caption = "想关闭的窗口TEXT属性段字符串" Then Unload iform Next 就可以了...
用起来,不太好..呵呵.只是我感觉面 而以吧.有时程序容易出错
我觉得 楼主所说的可能性是,包含其它窗体,并没有把其它窗体卸载噢!
也可以用:For Each FormName In Forms
Unload FormName
Next来把,所以有的窗体卸载了!
set form=nothing
For Each objForm In Forms
Unload objForm
Set objForm = Nothing
Next objForm
Unload objForm
Set objForm = Nothing
Next objForm严重同意
FrmTest.Show 1
规范的写法:Dim ObjForm as New FrmTestObjForm.Show 1Unload ObjForm
Set ObjForm = Nothing使用规范写法时就不会占用资源。另外,在主窗口退出后,要用循环语句卸载所有窗口,卸载所用到的所有全局对象及变量。
你对UNLOAD ME的能力有所怀疑?你应该对对自己的程序怀疑才对,是你的代码存在漏洞!没有关闭程序,说明你的程序有窗体没有卸载,可能是别的隐藏窗体,也可能就是Me。用End,数据极不安全,但肯定可Kill Me
用For Each虽较安全,但若存在窗体间的循环加载,仍不能卸干净总之一点,你必须找到窗体没卸干净的真正原因,这才是一个好程序的基础,那时再用哪种方法结束都行。
set me = nothing
end
是否有多个对象变量指向同一个对象而没有解除引用等等~
"任务管理器的应用程序里还会存在"
是因为有其它的资源没有释放,和这个Form无关
End只是强制退出吧,并没有释放资源~
set form=nothing '包括程序中所有的对象实例
end
使用规范写法时就不会占用资源。不知道你所说的不会占用资源是指什么资源?
不规范的写法:
FrmTest.Show 1
... ...
UnLoad FrmTest '你可别把这句话给忘了
规范的写法:Dim ObjForm as New FrmTestObjForm.Show 1
......
Unload ObjForm
Set ObjForm = Nothing这两种写法对资源占用会有区别?不明白。
// FrmTest.Show 1
直接用Form名称的话,是系统自动实例化的,也是系统自动卸载的,
我也不明白这有什么不规范?
使用不规范的写法(即直接直接用Form名称的话,是系统自动实例化的),在系统自动卸载时,对对象的卸载是不充分的,释放系统资源也不充分。 VB是一种纵容式语言,有时为了方便简单,就造成写法上的不规范。另外,Set ObjForm = New FrmTest 这样的语法对没有基础的初学者来说也不好理解。
全部的窗体都没了,如果不想中止主程序呢?
Dim iFrom As Form
For Each iform In Forms
If iFrom.Text = "想关闭的窗口TEXT属性段字符串" Then Unload iform
Next如果要卸载所有窗口,稍微改变点就可以了
Dim iFrom As Form
For Each iform In Forms
Unload iform
Next但按你的话看来
//怎样才能彻底 UNLOAD ME??
//我写了 UNLOAD ME,然后在任务管理器的应用程序里还会存在,这样就占用系统资源?
应该是你要结束这个进程,所以建议使用 End。
Dim iFrom As Form
For Each iform In Forms
If iFrom.Caption = "想关闭的窗口TEXT属性段字符串" Then Unload iform
Next
就可以了...