【发布时间】:2013-06-30 04:13:48
【问题描述】:
我有一个带有列表框的表单,我希望能够使用同一应用程序的所有打开表单来填充它。但是,我希望能够从列表框中选择一个项目,并能够在列表框中关闭与该项目关联的表单。这可以吗?
【问题讨论】:
我有一个带有列表框的表单,我希望能够使用同一应用程序的所有打开表单来填充它。但是,我希望能够从列表框中选择一个项目,并能够在列表框中关闭与该项目关联的表单。这可以吗?
【问题讨论】:
我找到了问题的答案。以下代码有效:
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim myForms As FormCollection = Application.OpenForms
For Each frmName As Form In myForms
ListBox1.Items.Add(frmName.Name.ToString)
Next
End Sub
Private Sub ListBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
If Not ListBox1.SelectedIndex = -1 Then
Dim myForm As Form = Application.OpenForms(ListBox1.Text)
myForm.Close()
End If
End Sub
ListBox1_SelectedIndexChanged 下的代码可以很容易地放在按钮中。
【讨论】:
My.Application.OpenForms 是您项目中打开的表单的集合。所以像:
For Each f As Form In My.Application.OpenForms
Me.SomeListBox.Items.Add(f)
Next
然后关闭选中的项,就是
DirectCast(Me.SomeListBox.SelectedItem, Form).Close()
【讨论】:
ListBox 中表单的字符串表示形式是什么,但它会以某种方式显示出来。 :) Add 接受一个对象。 (不过,我目前没有 Visual Studio……)