Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB .NET > как в класс включить форму?


Автор: Bertran 27.10.2008, 16:39
Как сделать так, чтобы по определенному методу выскакивала форма с некоторыми данными объекта?
Я сделал так: написал отдельно класс, создал отдельно форму (в пределах одного проекта, разумеется. + имеется основная форма  и т.п.) и из класса обращаюсь к форме (класса/объекта), но интуиция подсказывает мне, что это не совсем правильно. Знаю, что можно сделать ручками - описать все в коде класса (пока не научился), но можно же наверное создать форму в дизайнере и как-то прикрутить ее?
или же мой вариант правильный? Грамотное ли такое решение с точки зрения эстетики программирования?  smile
класс приватный, используется лишь в данном проекте.

Автор: Pilger 27.10.2008, 21:36
Не очень понял.. Ты можешь просто создать объект(формы) и передать ему нужные тебе параметры и потом просто показать ее... или я что то не так понял.

Автор: kipelovets 28.10.2008, 14:12
добавляешь в проект форму с именем например Form2, в дизайнере добавляешь на нее необходимые контролы, в редакторе кода добавляешь метод:

Код

Public Sub SetData(ByVal param1 as String, ByVal param2 as Integer) 
  ' Заполняем контролы данными твоего объекта
  '...
End Sub


в том твоем методе, из которого должна "выскакивать" форма пишешь:
Код

Dim frm as New Form2 
frm.SetData("hello,world",42)
frm.Show() ' или frm.ShowModal() если нужно дождаться закрытия формы


только не забудь удалить форму из памяти, когда она тебе больше не нужна

Автор: Pilger 28.10.2008, 23:09
Или просто в класс формы (Form2) добавляешь конструктор, например:
Код

    Public Sub New(ByVal param1 As String, ByVal param2 As Integer) 'параметры, которые передаешь
        Me.InitializeComponent()

        TextBox1.Text = param1 'присваиваешь
        TextBox2.Text = param2
    End Sub


А так создаешь и показываешь в другой форме:
Код

        Dim frm As New Form2("hello,world", 42)
        frm.Show()

Автор: Bertran 31.10.2008, 22:09
Я так понял в моем варианте нужно было бы оставить как есть: в проекте класс + форма для этого класса. Единственное, что мне не нравится - что форма получается публичная.
А приватную форму можно описать только (?) в коде класса. Только вот как на эту форму набросать парочку контролов?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)