Как да попълните списък със списък на всички отворени формуляри

Имам формуляр със списъчно поле и искам да мога да го попълня с всички отворени формуляри на едно и също приложение. Искам обаче да мога да избирам елемент от списъчното поле и да мога да затворя формуляра, свързан с този елемент в списъчното поле. Възможно ли е това да се направи?


person TheRyan722    schedule 30.06.2013    source източник


Отговори (2)


Намерих отговора на въпроса. Следният код работи:

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 може много лесно да бъде поставен в бутон.

person TheRyan722    schedule 30.06.2013

My.Application.OpenForms е колекция от отворени форми във вашия проект. Така че нещо като:

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

След това, за да затворите избрания елемент, това е

DirectCast(Me.SomeListBox.SelectedItem, Form).Close()
person Ry-♦    schedule 30.06.2013
comment
Само предложение @minitech; не можете да добавите формуляр към списъчно поле :) може да искате да промените това на: Me.SomeListBox.Items.Add(f.name) - person zaggler; 30.06.2013
comment
@MrCoDeXeR: Тогава близкото ще се счупи! Не знам какво е низовото представяне на формуляр в ListBox, но ще се покаже по някакъв начин. :) Add взема предмет. (В момента обаче нямам Visual Studio...) - person Ry-♦; 30.06.2013
comment
Тествах този метод и списъкът се показва с празни елементи, но елементите са там и ако затворите един от елементите, цялата програма се затваря. - person TheRyan722; 30.06.2013
comment
@TheRyan722 това е така, защото трябва да добавите името на приятеля от формата; вместо просто ....Add(f) променете това на: (f.Name) - person zaggler; 30.06.2013
comment
@TheRyan722: Променете настройките на проекта си, за да не се затваря, когато първоначалният формуляр е затворен. Моят проект › Приложение, вярвам. - person Ry-♦; 30.06.2013
comment
Намерих отговор и го публикувах. - person TheRyan722; 30.06.2013