[编辑] 的
请参阅this post,了解我为什么要在全球范围内声明表单元素。
我选择重新连接我的代码以摆脱全局定义。
[结束编辑]
我在运行时动态创建。 表单,所有按钮和组合框都全局声明为父表单。
dim myForm as new form
我在上面放了一些按钮和一个我正在填充的组合框。
我可以用
显示表格myForm.show()
myForm.bringToFront()
第一次一切正常。
当用户完成了从,我打电话:
myForm.close()
'have also tried
' myForm.Hide() and myForm.Dispose()
无论哪种方式,(即使只调用.close())第二次创建表单,我都会收到以下错误:
ObjectDisposedException未处理 无法访问已处置的对象。
如果我只是切换表单的可见性,每次都不会消除组合框的值 - 而且设置visibility = false似乎很抱歉。
为什么会这样?
答案 0 :(得分:1)
因为一旦您的表单关闭,就无法重新打开。
每次要打开新表单时,都必须将其重新分配给表单的新实例。如果你想要相同的实例,myForm.Show()和myForm.Hide()应该可以工作,只要你从不调用myForm.Close()
答案 1 :(得分:0)
我猜你的问题在这里:“表单,所有按钮和组合框都是全局声明为父表单。”
您正在全局定义表单,因此垃圾收集器不会自动清除它,因为它始终在作用域上。
要么您不处理表单,要么停止将其用作全局变量。