syed kareem Ответов: 4

Как, я могу получить имя формы от vb.net проект 2008 года?


Дорогие все я создал небольшую программу с помощью vb.net 2008 я хочу получить все имена форм из проектного решения во время выполнения, пожалуйста, дайте мне код.
я думаю, что код выглядит примерно так



private sub proshowformnames()
  For Each FRM As Form In Application.OpenForms
     MsgBox(FRM.Name)
  Next
end sub 



приведенный выше код работает отлично
мне нужно вот так закрыть имена форм во время выполнения

[edit]добавлен блок кода - OriginalGriff[/edit]

4 Ответов

Рейтинг:
2

Arabic Turgeman

Dim myAssembly As System.Reflection.Assembly = System.Reflection.Assembly.GetExecutingAssembly()
        Dim types As Type() = myAssembly.GetTypes()
        For Each myType As Object In types

            If myType.BaseType.FullName.ToString.ToUpper = "SYSTEM.WINDOWS.FORMS.FORM" Then
                MessageBox.Show(myType.Name)
            End If
        Next




Арабиктургеман


Рейтинг:
1

Sergey Alexandrovich Kryukov

Просто предупреждение для вас: Я не уверен, что тебе это действительно нужно. Form.Name Во время выполнения это свойство ничего не значит; оно полезно только для конструктора. Если вы делаете это только в учебных целях, это прекрасно.

Я подумал, что тебе лучше это знать.

Кроме того, имейте в виду, что закрытие формы в конечном итоге приведет к закрытию приложения, возможно, даже до того, как вы пройдете все формы (порядок работы не определен). Возможно, вы захотите проверить, что каждый из них является вашей основной формой, и пропустить основную форму.

—СА


Рейтинг:
0

OriginalGriff

Просто замените строку MsgBox на

FRM.Close()


Sergey Alexandrovich Kryukov

Это верно, мой 5-й, но... как насчет основной формы?
Смотрите мой ответ по двум важным пунктам.
--СА

Рейтинг:
0

sushant.khot31

Dim myAssembly As System.Reflection.Assembly = System.Reflection.Assembly.GetExecutingAssembly()

        Dim types As Type() = myAssembly.GetTypes()
        For Each t As Type In types
            If UCase(t.BaseType.ToString) = "SYSTEM.WINDOWS.FORMS.FORM" Then
                If t.BaseType.Name = "Form" Then
                    'MessageBox.Show((CType(Activator.CreateInstance(t), Form).Text))
                    MessageBox.Show("  " & t.Name & vbCrLf & " Name is : " & (CType(Activator.CreateInstance(t), Form).Text))
                End If
            End If
        Next


Ralf Meier

во-первых : этому вопросу уже почти 6 лет !
и затем : нет никакой разницы между вашим решением и решением 3