3

リストボックスのあるフォームがあり、同じアプリケーションの開いているすべてのフォームを入力できるようにしたいと考えています。ただし、リスト ボックスからアイテムを選択し、リスト ボックス内のそのアイテムに関連付けられたフォームを閉じることができるようにしたいと考えています。これは可能ですか?

4

2 に答える 2

4

問題の答えを見つけました。次のコードが機能します。

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ボタンに簡単に配置できます。

于 2013-06-30T05:18:24.750 に答える
1

My.Application.OpenFormsプロジェクトで開いているフォームのコレクションです。次のようなものです:

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

次に、選択したアイテムを閉じるには、

DirectCast(Me.SomeListBox.SelectedItem, Form).Close()
于 2013-06-30T04:17:13.387 に答える