【问题标题】:How to populate listbox with a list of all open forms如何使用所有打开表单的列表填充列表框
【发布时间】:2013-06-30 04:13:48
【问题描述】:

我有一个带有列表框的表单,我希望能够使用同一应用程序的所有打开表单来填充它。但是,我希望能够从列表框中选择一个项目,并能够在列表框中关闭与该项目关联的表单。这可以吗?

【问题讨论】:

    标签: vb.net listbox


    【解决方案1】:

    我找到了问题的答案。以下代码有效:

    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 下的代码可以很容易地放在按钮中。

    【讨论】:

      【解决方案2】:

      My.Application.OpenForms 是您项目中打开的表单的集合。所以像:

      For Each f As Form In My.Application.OpenForms
          Me.SomeListBox.Items.Add(f)
      Next
      

      然后关闭选中的项,就是

      DirectCast(Me.SomeListBox.SelectedItem, Form).Close()
      

      【讨论】:

      • 只是一个建议@minitech;您不能将表单添加到列表框:) 您可能希望将其更改为:Me.SomeListBox.Items.Add(f.name)
      • @MrCoDeXeR:那么关闭的东西就会坏掉!我不知道ListBox 中表单的字符串表示形式是什么,但它会以某种方式显示出来。 :) Add 接受一个对象。 (不过,我目前没有 Visual Studio……)
      • 我测试了这个方法,列表框出现了空白项,但项目在那里,如果你关闭这些项目,整个程序就会关闭。
      • @TheRyan722 那是因为你需要添加表格好友的名字;而不仅仅是 ....Add(f) 将其更改为: (f.Name)
      • @TheRyan722:将您的项目设置更改为在初始表单关闭时不关闭。我相信我的项目 > 应用程序。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-29
      • 1970-01-01
      • 2011-11-07
      • 2013-07-01
      • 2021-02-13
      • 2013-09-18
      相关资源
      最近更新 更多