ПОНЯТНО О Visual Basic NET (том 3)

       

Проект без формы, но со стандартным модулем


Создайте проект. В окне Solution Explorer сотрите значок формы Form1.vb, ответив ОК на предупреждение компьютера. Все – проект лишился формы, а значит и окна кода, принадлежавшего этой форме. Что же теперь делать, где программировать?

Создаем модуль. Ваши действия: Project ® Add New Item (Добавить новый компонент) ® в возникшем окне Add New Item (Рис. 21.1) выбираем Module ® Open.

Рис. 21.1

Вы видите, что в окне Solution Explorer появился значок Module1.vb (Рис. 21.2),

Рис. 21.2

а в проект добавилось окно Module1.vb, явно предназначенное для ввода кода:

Module Module1

   

End Module

Кстати, пролистайте список компонентов в окне Add New Item. Там вы увидите много полезных и любопытных вещей, которые можно вставлять в проект. Здесь и форма, и класс, и собственный элемент управления (User Control), и Интернет-страничка, и просто текстовый файл, и графические файлы (в том числе иконки и курсоры), и многое другое.

В наш проект добавился так называемый стандартный модуль или просто модуль. Мы уже знаем, что некие модули наряду с классами входят в состав пространств имен. Теперь мы видим, что эти самые модули могут входить и в состав проекта. Ну что ж, посмотрим на них «живьем», проверим, на что они способны.



Обратите внимание, что окно кода для модуля появилось, а вот соответствующего окна конструктора, куда бы мы могли помещать кнопки, метки и другие элементы управления, нет. Его и не будет. Ничего похожего на форму тоже не появилось. Ни формы, ни кнопок, ни меток, никаких других элементов управления в модуле кода нет и быть не может. Ничего такого, что можно увидеть. Получается, что если форма без кода – тело без души, то модуль – душа без тела.

Процедура Main. Запустите проект. VB жалуется на ошибки. Дело в том, что он привык при запуске загружать форму, а формы нет. Эту проблему нужно решать. И решать ее нужно еще и вот по какой причине. Как мы раньше заставляли VB выполнять то, что написано в окне кода? Создавая процедуры обработки событий, самыми популярными из которых были  Form1_Load и Button1_Click, а затем, после запуска проекта, щелкая по кнопкам. Теперь формы нет, элементов управления нет, кнопок, по которым можно было бы щелкнуть, нет, событий тоже нет, обрабатывать нечего. Тогда, если мы даже и запишем какой-то код в окне кода модуля, как заставим его выполниться?


На этот случай в модуле (и не только в нем) может существовать процедура с именем Main. Давайте создадим ее:

Module Module1

    Sub Main()

        Dim x As Integer = InputBox("Введите число")

        MsgBox(x ^ 2)

    End Sub

End Module

Теперь нам нужно сказать компьютеру, что начинать выполнение проекта нужно не с загрузки формы, которой все равно нет, а с выполнения процедуры Main в модуле Module1. Ваши действия: Project ® WindowsApplication1 Properties ® в возникшем окне (Рис. 21.3)  в поле Startup object (объект, с которого стартовать) выбираем Module1 ® ОК.



Рис. 21.3

В это же поле Startup object вам нужно заходить, когда вы переименовали форму Form1, чтобы сообщить VB, что проект нужно запускать с формы, имеющей уже другое имя.

Запускаем проект. Все сработало. Обошлись без формы. Обратите внимание, что работа проекта завершилась сама, автоматически, а когда стартовым объектом является форма, для завершения работы проекта приходится прикладывать усилия.

В окне кода нашего модуля вы можете объявлять какие угодно переменные и записывать какие угодно процедуры пользователя, запуская их из процедуры Main. То есть создавать полноценную программу. Конечно, нужно помнить, что без формы и элементов управления возможности ваши ограничены. Однако множество задач решается и без них. Ну, например, задача суммирования всех чисел из некоего файла.

Модулей добавлять в проект можно сколько угодно.

Термином модуль часто называют не только стандартный модуль, но и форму, и неведомый пока нам модуль класса и, как это ни странно, структуру. Я тоже буду так делать, когда это не будет вызывать путаницы.


Содержание раздела