Dim fList As New List(Of Form)
每次我打标记..
Dim f As New Form2
Me.AddOwnedForm(f)
fList.Add(f)
f.Show()
我创建了一个实例并将其添加到fList
..
但是,如果我关闭该特定实例..它会停留在fList
,每当我点击从列表中调出所有内容的某个事件时,就会显示所谓的已关闭形式。
这是我的程序流程:
点击标记 - >显示表格,添加到列表中
拖动地图 - >隐藏表格
mouseLeave - >显示隐藏的形式
但是当我手动关闭表单时,当我 Drag和MouseLeave 时,它再次出现。
问题是:如果关闭它,如何将添加的实例删除到fList
?
只有通过单击标记再次打开它才会出现。希望你明白我的意思。谢谢!的
答案 0 :(得分:2)
如果您仍然有对表单对象的引用:
fList.Remove(f) 'f is a reference to a form object
文档:http://msdn.microsoft.com/en-us/library/cd666k3e(v=vs.110).aspx
如果您知道列表中表单的索引:
fList.RemoveAt(index) 'removes the item at position of index
文档:http://msdn.microsoft.com/en-us/library/5cw9x18z(v=vs.110).aspx
如果要通过Text删除,可以使用第一种方法执行以下操作:
For Each f as Form in fList
If f.Text = "foo" Then fList.Remove(f)
Exit For
Next
或使用Linq:
fList.RemoveAll(Function(x) x.Text = "foo")
答案 1 :(得分:0)
Matt Miko的回答应该是最合适的,但我无法将其应用于我创建列表的方式。无论如何,我解决了这个问题。
因为我需要删除fList
中已关闭的表单元素..
Public fList As New List(Of Form)
然后在Form2
中添加了此代码:
Form1.fList.Remove(Me)
不知道这是可能的,但它对我有用。
如果您可以逻辑地看到它,如果我在表单上点击X,它将从列表中删除那个表单。这样我的程序只会显示所选的表格。 :)