Поместите на форму кнопку и запишите в окне кода формы такой текст:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Buttonl.Click
Dim Объект As New Класс
Debug. WriteLine(Оbeicr.C1)
Объект.Процедура()
End Sub
Запустите проект, нажмите кнопку, проект напечатает следующее:
Первая строка процедуры создает объект - экземпляр созданного нами класса. Делается это при помощи слова New. После этого мы можем пользоваться переменными и процедурами объекта из других модулей. Перед именем переменной или процедуры объекта мы обязаны писать имя объекта (а не класса) с точкой.
Обратите внимание, что в списке компонентов объекта, разворачивающемся после ввода точки, вы видите как переменную С1, так и процедуру Процедура.
Взаимодействие форм, модулей и классов в проекте
Рассмотрим взаимодействие, взаимные различия и сходство форм, модулей и классов. Без этого и применять их как следует, мы не сможем.
Создайте проект из двух форм, двух модулей и класса.
На первую форму поместите кнопку. В окна кода введите такой текст:
Первая форма
Public Class Forml
Inherits System-Windows. Forms. Form
IWindows Form Designer generated code.
Private Sub Buttonl _Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) _Handles Buttonl.Click
Debug.WriteLine(M2)
Debug. WriteLine(Объект.C1)
Debug,WriteLine(Форма2.F2)
Процедура_модуля2()
Объект.Процедура_класса()
Форма2.Процедура_формы2()
Форма2.Show()
End Sub
End Class
Первый модуль
Module Modulel
Public Форма2 As New Form2
Public Объект As New Класс
End Module
Вторая форма
Public Class Form2
Inherits System.Windows.Forrns.Form
Windows Form Designer generated code
Public F2 As String = "F2"
Public Sub Процедура_формы2()
Объект.С1 = "Форма 2 изменила переменную С1 из Объекта"
Debug. WriteLine( Объект.С1)
End Sub
End Class
Второй модуль
Module Module2
Public M2 As String = "M2"
Public Sub Процедура_модуля2()
Форма2.F2 = "Модуль 2 изменил переменную F2 из формы 2"
Debug.WriteLine(Форма2.F2)
End Sub
End Module
Класс
Public Class Класс
Public C1 As String = "C1"
Public Sub Процедура_класса()
M2 = "Объект изменил переменную М2 из модуля 2"
Debug.WriteLine(M2)
End Sub
End Class
Запустите проект, нажмите кнопку, проект напечатает следующее:
М2
С1
F2
Модуль 2 изменил переменную F2 из формы 2
Объект изменил переменную М2 из модуля 2
Форма 2 изменила переменную С1 из Объекта
Сходство и различия будем прослеживать у трех модулей, а именно у второго стандартного модуля, второй формы и класса. Вы видите, что их код написан почти одинаковым, если не считать, конечно, начальные строки кода у формы. Код всех этих трех модулей содержит объявление переменной и объявление процедуры. И та и другая объявлены как Public, чтобы и той и другой можно было пользоваться из любого модуля проекта.
Когда форма, модуль и класс могут начать работу?
! Если форма - стартовый объект, VB сам, без нашего вмешательства и загружает ее, и показывает на экране.
Стандартные модули тоже безо всяких забот программиста готовы к работе и использованию сразу после запуска проекта.
Это значит, что форма Forml и оба модуля готовы к работе и использованию сразу после запуска проекта.
Что же касается класса и не стартовой формы, здесь дело другое. В нашем проекте забота о том, чтобы они пришли в рабочее состояние, лежит на первом стандартном модуле. Взгляните на две строки его кода.
! Если мы хотим использовать класс как объект, то, чтобы класс заработал, нам нужно из него создать объект.
Что и делает оператор
Public Объект As New Класс,
Теперь о форме. Форма, оказывается, тоже класс. Чтобы убедиться в этом, достаточно взглянуть на первую строку окна ее кода. А раз так, то, чтобы она заработала в проекте, из нее тоже должен быть создан объект и показан на экране.
! Если форма - не стартовый объект, программист должен сам создать ее как объект из ее класса, а затем показать на экране.