Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 从(表单的)列表中删除表单实例_.net_Vb.net_Winforms_Generic List - Fatal编程技术网

.net 从(表单的)列表中删除表单实例

.net 从(表单的)列表中删除表单实例,.net,vb.net,winforms,generic-list,.net,Vb.net,Winforms,Generic List,Dim fList作为新列表(表格) 每次我碰到一个记号笔 Dim f As New Form2 Me.AddOwnedForm(f) fList.Add(f) f.Show() 我创建一个实例并将其添加到fList 但是,如果我关闭该特定实例。。它停留在fList上,每当我点击某个从列表中调出所有内容的事件时,就会出现假定已关闭的表单 以下是我的程序流程: 单击标记-->显示表单,添加到列表 拖动地图-->隐藏表单 mouseLeave-->显示隐藏的表单 但是当我手动关闭窗体时,当我拖动并

Dim fList作为新列表(表格)

每次我碰到一个记号笔

Dim f As New Form2
Me.AddOwnedForm(f)
fList.Add(f)
f.Show()
我创建一个实例并将其添加到
fList

但是,如果我关闭该特定实例。。它停留在
fList
上,每当我点击某个从列表中调出所有内容的事件时,就会出现假定已关闭的表单

以下是我的程序流程:

单击标记-->显示表单,添加到列表
拖动地图-->隐藏表单
mouseLeave-->显示隐藏的表单
但是当我手动关闭窗体时,当我拖动并删除鼠标时,它会再次出现

问题是:如果关闭添加到
fList
的实例,如何将其删除


仅当通过单击标记再次打开时,它才会出现。希望你明白我的意思。谢谢

如果仍有对表单对象的引用:

fList.Remove(f) 'f is a reference to a form object
文件:

如果您知道列表中表格的索引:

fList.RemoveAt(index) 'removes the item at position of index
文件:

如果要通过文本删除,可以使用第一种方法执行以下操作:

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")

马特·米科(Matt Miko)的答案应该是最合适的,但我无法将其应用于我创建列表的方式。不管怎样,我解决了这个问题

因为我需要删除
fList
中已关闭的表单元素

Public fList As New List(Of Form)
然后在
表格2中添加了此代码:

Form1.fList.Remove(Me)
我不知道这是可能的,但对我来说很有效


如果您能从逻辑上看到它,如果我在表单上点击X,它将从列表中删除该表单。这样,我的程序将只显示所选的表格。:)

这样行吗
fList.Remove(f.text=some变量)
如果是,我应该把它放在哪里我需要在表单实例上单击X后将其删除..不,这将不起作用,如果您检查我喜欢的文档,则没有接受布尔参数的方法。请参阅我的更新答案,了解如何执行此操作。我没有为列表中的元素提供名称和ID,我不熟悉如何使用此功能,但这可能会起作用。我需要先学习。谢谢但是我正在查看
fList.Clear()
,只将当前可见的
表单添加到列表中,这样这些表单就会被拉出。那会有好处吗?此外,我也看不到应该将代码放在哪里,以便在我关闭实例时它将触发..:/这只是使用我在回答中发布的第一个选项,因为您正在将对特定表单实例的引用传递给remove方法。我认为第一个选项是我可以添加到代码中的。但由于我的名单上没有名字,这将删除我不知道哪一个。英雄联盟