none
(VB.NET) Получение списка всех форм проекта, или получение формы по имени RRS feed

  • Вопрос

  • Здравствуйте!

    Собственно, это и интересует:Получение списка всех форм проекта, или получение формы по имени VB.net

    искал по форуму, ничего внятного нет, прошу помощи)


    1 апреля 2011 г. 10:23

Ответы

  • решение нашлось простое.

    Dim

    lf As New List(Of Form)

    lf.Add(нужные формы)

    при небольшом колве форм в проекте(40) сойдёт. 

    • Помечено в качестве ответа Жучок 4 апреля 2011 г. 5:21
    4 апреля 2011 г. 4:54

Все ответы

  • Изучайте пространство имен My

    Например обратится к форме (в проекте WinForm) можно так:

    My.Forms.Form1
    

    и так:

     

    Dim f1 As New Form1
    
    f1.Text = "Форма 1"
    

     

     

     



    1 апреля 2011 г. 11:13
    Отвечающий
  • я наверно не точно объяснил суть проблемы:

    нужно в цикле перебирать существующие формы и элементы на них.

    элементы получается, а вот формы нет)

    я представляю себе это так:

    For

    Each fff As Form In My.Forms(? или ещё что)

     

    Next

    1 апреля 2011 г. 11:19
  • Нет так не получится. Что бы перебрать циклом нужна коллекция. Я нашел только коллекцию My.Application.OpenForms , но эна выдасть только открытые формы а не все созданные в проекте. В WinForm даже и не знаю есть ли готовое решение или нужно создавать собсвенный объект уровня Application и заполнять его списком всех форм проекта?!

    В WPF эта проблема легко решается...

    • Предложено в качестве ответа Abolmasov Dmitry 1 апреля 2011 г. 12:51
    • Отменено предложение в качестве ответа Жучок 3 апреля 2011 г. 10:47
    1 апреля 2011 г. 11:34
    Отвечающий
  • странно, коллекцию элементов на форме перебрать могу, а коллекции форм нет.

    возможно ли получить форму по её имени?

    3 апреля 2011 г. 10:47
  • решение нашлось простое.

    Dim

    lf As New List(Of Form)

    lf.Add(нужные формы)

    при небольшом колве форм в проекте(40) сойдёт. 

    • Помечено в качестве ответа Жучок 4 апреля 2011 г. 5:21
    4 апреля 2011 г. 4:54
  • Собственно это я вам и посоветовал сделать - создать свою коллекцию из форм проекта...
    4 апреля 2011 г. 4:57
    Отвечающий
  • Public Class EditorSelectBlanc
        Public SS As New List(Of String)
        Private Sub EditorSelectBlanc_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim myAssembly As System.Reflection.Assembly = System.Reflection.Assembly.GetExecutingAssembly()
            Dim types As Type() = myAssembly.GetTypes()
            For Each myType In types
                ' mytype 
                If myType.BaseType.FullName = "System.Windows.Forms.Form" Then
                    Dim s As String = myType.Name
                    SS.Add(s)
                End If
            Next
        End Sub
    ....
    End Class
    8 декабря 2011 г. 19:08