Как создать ссылку на форму, просто по ее имени или .Fullname ..? Это кажется таким простым, но ничего, что я пробовал, будет работать.Перечислить все формы в проекте VB.NET, а затем показать их по имени или по имени?
Учитывая следующий код, часть в конце - это место, где я застрял.
Спасибо.
Public Class frmLauncher
Private Sub FormPicker_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim myAssembly As System.Reflection.Assembly = System.Reflection.Assembly.GetExecutingAssembly()
Dim myTypes() As Type = Nothing
' Both of the following lines seem to do the same thing.
' Is one way better or safer than the other?
myTypes = myAssembly.DefinedTypes
myTypes = myAssembly.GetTypes
For Each t In myTypes
If t.BaseType.FullName.ToString.ToUpper = "System.Windows.Forms.Form".ToUpper Then
ListBox1.Items.Add(t.Name)
End If
Next
End Sub
Private Sub ListBox1_DoubleClick(sender As Object, e As EventArgs) Handles ListBox1.DoubleClick
Dim frmName As String = ListBox1.Text
' the next line is where I'm totally stuck.
Dim frm As Form = GetSomethingUnknown(frmName)
frm.Show()
End Sub
End Class
Форма - это просто класс, поэтому вы не могли бы и не могли бы создать ссылку на него, но вы могли бы создать ссылку на экземпляр (объект), созданный из этого класса. Я бы держался подальше от Reflection. Во-первых, это довольно сложно, и вы не хотите рисковать тем, что это похоже на решение любой ситуации, с которой вы сталкиваетесь. – Plutonix
Как только у меня появился список форм, я просто использовал список для генерации кода для загрузки форм - ОК для быстрого и грязного, а не динамического. Ищите NimbleText для интересного инструмента для создания повторяющегося кода. – rheitzman