ПОНЯТНО О Visual Basic NET

         

Команда "Показать скрытые компоненты" (контекстное меню окна просмотра объектов)


Эта команда показывает или скрывает в окне просмотра объектов скрытые компоненты каждого класса. Скрытые компоненты не предназначены для использования в программах и обычно не выводятся в окне просмотра объектов. Они отображаются светло серым текстом.



Команда Порядок (меню "Формат")


Изменяет порядок выделенных объектов в форме.

На передний план Помещает выделенные объекты в форме перед всеми остальными.

Кнопка панели инструментов:

. Клавиши быстрого вызова: CTRL+J.

На задний план Помещает выделенные объекты в форме позади всех остальных.

Кнопка панели инструментов:

. Клавиши быстрого вызова: CTRL+K.

Переместить вверх Перемещает выделенный объект на один шаг упорядочения по z выше.

Кнопка панели инструментов:

.

Переместить вниз Перемещает выделенный объект на один шаг упорядочения по z ниже

Кнопка панели инструментов:

.



Команда "Размер" (контекстное меню)


Указатель преобретает другую форму и становится возможным изменение размеров активного окна или панели инструментов.



Команда Разместить по центру в форме (меню "Формат")


Располагает выделенные объекты на центральных осях формы.

по горизонтали Располагает середины выделенных объектов на одной горизонтальной линии в середине формы.

Кнопка панели инструментов:

.

по вертикали Располагает центры выделенных объектов на одной вертикальной линии в центре формы.

Кнопка панели инструментов:

.



Команда "Скрыть" (контекстное меню)


Команда служит для скрытия активного окна, проекта, папки, модуля или панели элементов управления.



Команда "Следующая инструкция" (меню "Отладка")




Устанавливает точку выполнения на выбранную строку программы. Для установки строки, которая будет выполняться после текущей инструкции, следует выбрать нужную строку программы и выполнить команду "Следующая инструкция" или с помощью мыши переместить индикатор текущей выполняемой строки на полях в нужную строку.

С помощью этой команды допускается выбор строки программы, расположенной как до, так и после текущей инструкции. При запуске программы промежуточные строки не выполняются. Эта команда полезна для повторения инструкции внутри текущей процедуры, а также для пропуска нежелательных инструкций. С помощью команды "Следующая инструкция" невозможно установить точку выполнения на инструкцию в другой процедуре.

Кнопка панели инструментов:

. Клавиша быстрого вызова: CTRL+F9.



Команда "Снять все точки останова" (меню "Отладка")


Эта команда удаляет все точки останова из проекта. В этом случае возможно прерывание программы, если установлено контрольное выражение или на вкладке "Общие" окна диалога "Параметры" выбран параметр Останов при любой ошибке. Отменить действие команды "Снять все точки останова" нельзя.

Кнопка панели инструментов:

. Клавиша быстрого вызова: CTRL+SHIFT+F9.



Команда Список констант (меню "Правка")


В окне модуля выводит раскрывающийся список, содержащий допустимые константы для введенного свойства, за которым следует знак равенства (=). Допускается также применение этой команды к функциям, значением которых являются константы. Чтобы список при наборе текста открывался автоматически необходимо выбрать параметр Список компонентов на вкладке Редактор окна диалога Параметры.

Поиск константы в списке выполняется путем:

Ввода имени.

Использования клавиш управления курсором вверх и вниз для перемещения по списку.

Прокрутки списка и выбора желаемой константы.

Вставка выделенной константы в инструкцию выполняется путем:

Двойного щелчка мышью на константе.

Выделения константы и нажатия клавиши TAB для вставки или ENTER для вставки и перехода к следующей строке.

Кнопка панели инструментов:

. Клавиша быстрого вызова: CTRL+SHIFT+J.



Команда Список свойств/методов (меню "Правка")


В окне модуля выводит раскрывающийся список, содержащий доступные для объекта свойства и методы. Если указатель установлен на пустой строке, команда Список свойств/методов выводит список глобально доступных методов. Чтобы список при наборе текста открывался автоматически необходимо выбрать параметр Список компонентов на вкладке Редактор окна диалога Параметры.

Поиск свойства или метода в списке выполняется путем:

Ввода имени. По мере ввода, подходящее свойство или метод выделяется и перемещается в начало списка.

Использования клавиш управления курсором вверх и вниз для перемещения по списку.

Прокрутки списка и выбора желаемого свойства или метода.

Вставка выделенного свойства или метода в инструкцию выполняется путем:

Двойного щелчка мышью на свойстве или методе.

Выделения свойства или метода и нажатия клавиши TAB для вставки или ENTER для вставки и перехода к следующей строке.

Примечание. После точки (.) в объектах типа Variant список не выводится.

Кнопка панели инструментов:

. Клавиша быстрого вызова: CTRL+J.



Команда "Справка" (контекстное меню)


Выводит разделы справочной системы, относящиеся к выделенному элементу.



Команда Сведения о параметре (меню "Правка")


Эта команда в окне модуля выводит сведения о параметрах начальной функции или инструкции. Если функция или инструкция содержит в качестве параметров другие функции, команда Сведения о параметрах выведет сведения только о первой функции. Для получения сведений по всем вложенным функциям служит команда Краткие сведения.

Параметр выделяется жирным шрифтом по мере его ввода, до тех пор пока не введена запятая, отделяющая его от следующего параметра.

Вызванные Сведения о параметре не исчезнут пока:

Не введены все требуемые параметры.

Функция не завершена без указания необязательных параметров.

Не нажата клавиша ESC.

Кнопка панели инструментов:

. Клавиша быстрого вызова: CTRL+SHIFT+I.



Команда "Свернуть родительский объект" (контекстное меню)


Команда служит для скрытия элементов родительского объекта в областях Локальные и Контрольные окна отладки. При скрытии элементов списка, значок минус (-) слева от выражения изменяется на плюс (+).



Команда "Свойства" (контекстное меню)


Эта команда выводит окно "Свойства" для выбранного объекта.



Команда "Свойства" (контекстное меню окна просмотра объектов)


Выводит окно диалога Параметры компонента, в котором задается описание специального компонента, а также присваивается идентификатор экрана справки и имя файла справки.

Команда доступна только для элементов, содержащих инструкции Basic.



Команда "Точка останова" (меню "Отладка")


Команда служит для установки или удаления точки останова в текущей строке программы. Невозможно установить точку останова в строке, содержащей неисполняемые инструкции, например комментарии, инструкции описания или пустые строки.

Строка программы, в которой установлена точка останова, приобретает цвет, заданный на вкладке "Модуль" в окне диалога "Параметры".

Кнопка панели инструментов:

. Клавиша быстрого вызова: F9.



Команда "Только слово целиком (Поиск)" (контекстное меню окна просмотра объектов)


Эта команда позволяет найти текст, в точности совпадающий с введенным в поле поиска в окне просмотра объектов.



Команда "Удалить контрольное значение" (контекстное меню)


Эта команда служит для удаления контрольного значения.



Команда Уменьшить отступ (меню "Правка")


Смещает все выделенные строки в предыдущую позицию табуляции. Все выделенные строки смещаются на одинаковое число пробелов, при этом сохраняются относительные отступы между ними.

Изменение интервала табуляции выполняется на вкладке Редактор окна диалога Параметры.

Кнопка панели инструментов:

. Клавиша быстрого вызова: CTRL+SHIFT+M.



Команда "Установить/снять" (контекстное меню)


Точка останова. Устанавливает или удаляет точку останова на текущей строке.

Закладка. Устанавливает или удаляет закладку на текущей строке в окне модуля.



Команда Увеличить отступ (меню "Правка")


Смещает все выделенные строки в следующую позицию табуляции. Все выделенные строки смещаются на одинаковое число пробелов, при этом сохраняются относительные отступы между ними.

Изменение интервала табуляции выполняется на вкладке Редактор окна диалога Параметры.

Кнопка панели инструментов:

. Клавиша быстрого вызова: CTRL+M.



Команда Выделить все (меню "Правка")


Эта команда служит для выделения всего текста в окне модуля или всех элементов управления в форме.



Команда "Выполнить до текущей позиции" (меню "Отладка")


При работе в режиме конструктора команда "Выполнить до текущей позиции" служит для задания инструкции, находящейся ниже по тексту программы, на которой необходимо остановить выполнение. Программа выполняется от текущей до выбранной инструкции в строке индикатора на полях, напротив текущей строки выполнения, появляется индикатор на полях

.

Эта команда полезна, например, для пропуска больших циклов.

Клавиша быстрого вызова: CTRL+F8.



Команда Выровнять размер (меню "Формат")


Беря за основу объект с белыми маркерами захвата, корректирует размеры выделенных объектов в выбранном направлении.

по ширииине Корректирует ширину.

Кнопка панели инструментов:

.

по высоте Корректирует высоту.

Кнопка панели инструментов:

.

по ширииине и высоте Корректирует как ширину, так и высоту.

Кнопка панели инструментов:

.



Команда Выровнять размер по сетке (меню "Формат")


Изменяет высоту и ширину выделенного объекта до ближайшей линий сетки в форме. Размер сетки изменяется на вкладке Общие окна диалога Параметры.

Кнопка панели инструментов:

.



Команда "Закрепление" (контекстное меню)


Переключает способность активного окна фиксировать свое положение.

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



Команда Заменить (меню "Правка")


Команда выполняет поиск указанного текста в модуле текущей базы данных и заменяет его на новый текст, заданный в окне диалога Замена.

Кнопка панели инструментов:

. Клавиша быстрого вызова: CTRL+H.

Параметры окна диалога

Образец В это поле следует ввести или вставить искомый текст либо нажать стрелку вниз и выбрать один из четырех последних использовавшихся образцов. Если при вызове команды выделен текст или курсор находится на слове, этот текст будет помещен в поле Образец.

Заменить на В это поле следует ввести или вставить из буфера обмена текст замены. Для удаления из документа текста, указанного в поле Образец следует оставить поле Заменить на пустым.

Область поиска Задает диапазон поиска.

Текущая процедура-Поиск выполняется только в текущей процедуре.

Текущий модуль-Поиск выполняется только в текущем модуле.

В текущей базе данных-Поиск выполняется во всех модулях текущей базы данных.

Выделенный текст-Поиск выполняется в выделенном блоке текста.

Просмотр Устанавливает направление поиска: Вверх, Вниз от положения курсора или Все в выбранном диапазоне.

Только слово целиком Выполняет поиск целого слова и игнорирует его вхождения в более длинные слова.

С учетом регистра Выполняет поиск вхождений с комбинацией строчных и заглавных букв, указанной в поле Образец.

Использовать шаблон Выполняет поиск с использованием подстановочных символов.

Найти далее Выполняет поиск и выделяет следующее вхождение текста, заданного в поле Образец.

Отмена Закрывает окно диалога без выполнения замены.

Заменить Запрашивает подтверждение перед каждой заменой искомого текста.

Заменить все Выполняет замену всех вхождений искомого текста на текст замены, не запрашивая подтверждения.



Команда Завершить слово (меню "Правка")


Завершает ввод набираемого слова, если только введено достаточно символов для распознавания слова Visual Basic.

Кнопка панели инструментов:

. Клавиша быстрого вызова: CTRL+SPACEBAR.



Команды Найти и Найти далее (меню "Правка")


Найти Выполняет поиск указанного в окне диалога Поиск текста в заданном диапазоне.

В случае успешного поиска окно диалога закрывается и выделяется найденный и текст. Если совпадение не обнаружено, выводится окно с сообщением о том, что указанный текст не найден.

Кнопка панели инструментов:

. Клавиша быстрого вызова: CTRL+F.

Найти далее Выполняет поиск и выделяет следующее вхождение текста, заданного в поле Образец окна диалога Поиск.

Кнопка панели инструментов:

. Клавиши быстрого вызова: F3 (найти далее) или SHIFT+F3 (найти предыдущее вхождение).

Параметры окна диалога

Образец В это поле следует ввести или вставить искомый текст либо нажать стрелку вниз и выбрать один из четырех последних использовавшихся образцов. Если при вызове команды выделен текст или курсор находится на слове, этот текст будет помещен в поле Образец.

Область поиска Задает диапазон поиска.

Текущая процедура-Поиск выполняется только в текущей процедуре.

Текущий модуль-Поиск выполняется только в текущем модуле.

В текущей базе данных-Поиск выполняется во всех модулях текущей базы данных.

Выделенный текст-Поиск выполняется в выделенном блоке текста.

Просмотр Устанавливает направление поиска: Вверх, Вниз от положения курсора или Все в выбранном диапазоне.

Только слово целиком Выполняет поиск целого слова и игнорирует его вхождения в более длинные слова.

С учетом регистра Выполняет поиск вхождений с комбинацией строчных и заглавных букв, указанной в поле Образец.

Использовать шаблон Выполняет поиск с использованием подстановочных символов.

Найти далее Выполняет поиск и выделяет следующее вхождение текста, заданного в поле Образец.

Отмена Закрывает окно диалога без выполнения поиска.

Заменить Выводит окно диалога Замена, сохраняя текст, введенный в окне диалога Поиск.



Команды "Объект" и "Программа" (контекстное меню)


Эти команды позволяют выбрать либо окно конструктора, либо окно модуля.

Объект Отображает или активизирует выбранный элемент.

Программа Отображает или активизирует окно модуля для выделенного объекта.



Команды Отменить и Вернуть (меню Правка)


Отменить Отменяет последнее действие редактирования, например ввод текста в окне модуля или удаление элемента управления. При удалении одного или более элементов удаления команда Отменить позволяет восстановить их и их свойства.

Кнопка панели инструментов

. Клавиши быстрого вызова: CTRL+Z или ALT+BACKSPACE.

Примечание. В форме с помощью этой команды невозможно отменить команду Вырезать.

Вернуть Восстанавливает последнее изменение текста, изменение размера или положения элемента управления, если с момента вызова команды Отменить не произошло никаких действий.

Кнопка панели инструментов

.

В случае редактирования текста команды Отменить и Вернуть позволяют восстановить до двадцати изменений.

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



Команды "Шаг с заходом", "Шаг с обходом" и "Шаг с выходом" (меню "Отладка")


"Шаг с заходом" Выполняет одну инструкцию программы.

Если команда "Шаг с заходом" выполняется не в режиме конструктора, на текущей строке выполнения осуществляется переход в режим прерывания. Если инструкция является вызовом процедуры, будет выведена первая инструкция этой процедуры.

Во время разработки эта команда запускает выполнение и входит в режим прерывания, прежде чем выполнится первая строка программы.

При отсутствии текущей точки выполнения команда "Шаг с заходом" не осуществляет никаких действий, пока не будет активирована программа, например выбором документа с помощью мыши.

Кнопка панели инструментов:

. Клавиша быстрого вызова: F8.

"Шаг с обходом" Похожа на команду "Шаг с заходом". Различие проявляется, только если текущая инструкция содержит вызов процедуры.

Команду "Шаг с обходом" выполняет процедуру за один шаг и затем переходит к следующей инструкции текущей процедуры. Поэтому инструкцией, выводимой на следующем шаге, является следующая инструкция текущей процедуры, независимо от того, содержит ли текущая инструкция вызов процедуры. Команда доступна только в режиме прерывания.

Кнопка панели инструментов:

. Клавиша быстрого вызова: SHIFT+F8.

"Шаг с выходом" Выполняет оставшиеся строки процедуры, в которой находится текущая точка выполнения. Следующей выводимой инструкцией является инструкция, следующая за вызовом этой процедуры. Выполняются все строки программы между текущей и конечной точками выполнения. Команда доступна только в режиме прерывания.

Кнопка панели инструментов:

. Клавиша быстрого вызова: CTRL+SHIFT+F8.



Команды Вырезать, Копировать, Вставить (меню "Правка")


Вырезать Удаляет выделенный текст или элемент управления и помещает его в буфер обмена. Чтобы сделать команду доступной необходимо выделить хотя бы один символ или элемент управления. Допускается отмена команды Вырезать над элементом управления.

Кнопка панели инструментов:

. Клавиши быстрого вызова: CTRL+X или SHIFT+DELETE

Копировать Копирует выделенный текст или элемент управления и помещает его в буфер обмена. Чтобы сделать команду доступной необходимо выделить хотя бы один символ или элемент управления. Отмена команды Копировать в окне модуля невозможна.

Кнопка панели инструментов:

. Клавиши быстрого вызова: CTRL+C или CTRL+INSERT.

Вставить Вставляет содержимое буфера обмена в текущую позицию. Текст помещается туда, где находится курсор.

Вставляемые элементы управления помещаются в центр формы.

Допускается отмена команды Вставить в окне модуля и в форме, если в нее был вставлен элемент управления.

Кнопка панели инструментов:

. Клавиши быстрого вызова: CTRL+V или SHIFT+INS.



Команды Выровнять (меню "Формат")


Эти команды служат для выравнивания выделенных объектов относительно друг друга с использованием в качестве основы элемента управления с белыми маркерами захвата.

По левому краю Выравнивает горизонтальное положение выбранных объектов, помещая их левые границы на одну линию с элементом управления с белыми маркерами захвата.

Кнопка панели инструментов:

.

По центру Выравнивает горизонтальное положение выбранных объектов, помещая их центры на одну линию с элементом управления с белыми маркерами захвата.

Кнопка панели инструментов:

.

По правому краю Выравнивает горизонтальное положение выбранных объектов, помещая их правые границы на одну линию с элементом управления с белыми маркерами захвата.

Кнопка панели инструментов:

.

По верхнему краю Выравнивает вертикальное положение выбранных объектов, помещая их верхние границы на одну линию с элементом управления с белыми маркерами захвата.

Кнопка панели инструментов:

.

По середине Выравнивает вертикальное положение выбранных объектов, помещая их середины на одну линию с элементом управления с белыми маркерами захвата.

Кнопка панели инструментов:

.

По нижнему краю Выравнивает вертикальное положение выбранных объектов, помещая их нижние границы на одну линию с элементом управления с белыми маркерами захвата.

Кнопка панели инструментов:

.

По узлам сетки Помещает верхний левый угол выделенных объектов в ближайший узел сетки. Размер объектов не изменяется.

Кнопка панели инструментов:

.



Команды Закладки (меню "Правка")


Выбор этой команды приводит к появлению меню, позволяющему создавать или удалять закладки в окне модуля, переходить к следующей или предыдущей закладке или удалять все закладки.

При добавлении закладки рядом с текущей строкой появляется значок

.

Закладка Снимает или устанавливает закладку.

Кнопка панели инструментов:

Следующая закладка Перемещает место вставки к следующей закладке.

Кнопка панели инструментов:

Предыдущая закладка Перемещает место вставки к предыдущей закладке.

Кнопка панели инструментов:

Снять все закладки Удаляет все закладки.

Кнопка панели инструментов:



Команды "Закомментировать блок" и "Раскомментировать блок"


Эти команды служит для добавления или удаления символа комментария, апострофа, в каждую строку выделенного блока текста. Если в момент вызова команд нет выделенного текста, символ комментария добавляется в строку, содержащую указатель.

Закомментировать блок Добавляет символ комментария в каждую строку выделенного блока теста.

Раскомментировать блок Удаляет символ комментария из каждой строки выделенного блока теста.



в тексте программы. Зачем они


Комментарии – это пояснения в тексте программы. Зачем они нужны?
Когда человек со стороны посмотрит на вашу программу, например, на эту (из калькулятора)
Private Sub Кл_вычитания_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Кл_вычитания.Click
    Результат.Text = Val(Число1.Text) - Val(Число2.Text)
End Sub
он может и не понять, в чем здесь смысл и для какой задачи программа написана. Зачем, например, Val? Да и все остальное… Ну да ладно, если не поймет он, это еще полбеды, а беда наступит тогда, когда вы сами через некоторое время забудете, что здесь к чему.
Любой профессиональный программист знает две вещи. Первая – любая старая программа через 12 месяцев забывается напрочь. Вторая – любая старая программа через 13 месяцев бывает вдруг позарез нужна (например, как исходный материал для новой программы) и поэтому в ней срочно нужно разобраться. Наученный горьким опытом, программист снабжает многие строчки кода собственными комментариями. Из предыдущих трех строк получается вот что:
'Процедура обработки нажатия на кнопку вычитания:
Private Sub Кл_вычитания_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Кл_вычитания.Click
    Результат.Text = Val(Число1.Text) - Val(Число2.Text)     'Функция Val нужна для "превращения текста в число"
End Sub
Компьютеру комментарий не нужен, он его не поймет, а если начнет понимать, то ничего хорошего из этого не выйдет. Так что заглядывать в него компьютер не должен. И чтобы ясно показать компьютеру, куда ему не надо заглядывать, программист в каждой строке кода перед комментарием ставит одинарную кавычку. VB, компилируя очередную строку кода, просматривает ее слева направо, и как только наткнется на кавычку, правее уже не глядит. Поэтому правее комментариев писать код нет смысла.
VS для нашего удобства выделяет комментарии зеленым цветом.

Кому предназначена эта книга?


Книга рассчитана на две категории читателей:

На начинающих программистов, в том числе даже на тех читателей, которые в своей жизни не запрограммировали ни строчки и просто хотят научиться программировать. Мало того – в конце книги вы найдете два Приложения, которые подготовят к восприятию книги даже тех, кто вообще никогда не садился за компьютер.

На программистов со средним опытом программирования, которые хотят освоить настоящий объектно-ориентированный язык и узнать, что такое объектно-ориентированное программирование. Они получат то, чего хотели – почувствуют, что значит объекты «на кончиках пальцев». Но им может показаться, что я слишком «разжевываю» материал. Что ж, каюсь: я всегда придерживался того мнения, что лучше «переобъяснить», чем «недообъяснить».

Это самоучитель. Книга написана с расчетом на то, что, изучив ее без посторонней помощи, вы сможете без посторонней помощи составлять программы на VB и выполнять их на компьютере тоже без посторонней помощи. Выражаясь рекламным языком: «Все, что вам нужно знать заранее, это где находится кнопка включения компьютера!». Все остальное в книге объяснено, включая инструкцию по установке VB на ваш компьютер, по работе в Windows и по вводу программного текста в компьютер.

Автор приложил специальные усилия для того, чтобы изложение было понятным. Везде, где можно, я старался объяснить не только то, что

делает компьютер, но и почему он это делает. Все объясняется на примерах. Рассмотрение почти каждой темы заканчивается задачами на составление программы (всего таких задач – 146).

 

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

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



Кратко о NET Framework и о Visual Studio NET


Visual Basic .NET не является отдельной обособленной разработкой. Он создавался в рамках новой идеологии, предложенной компанией Microsoft. Эта идеология получила название .NET (именно так – с предшествующей точкой). Суть идеологии состоит в том, что программирование постепенно перемещается от отдельного компьютера в сеть (NET по-английски – «сеть») и в Интернет, а значит нужно делать упор на программирование в сетях, Интернете. Отсюда также следует, что особое внимание нужно обращать на безопасность выполнения программ. По замыслу ее создателей идеология .NET должна вывести информационный мир на новый уровень использования компьютеров, сетей, Интернета и разработки программ.

Претворяя в жизнь идеологию .NET, фирма Microsoft разработала комплекс программных средств для ее осуществления. Этот всеобъемлющий комплекс принято называть платформой .NET. Предполагается, что эта платформа будет поддерживаться не только Windows, но и другими операционными системами.

Важной составной частью платформы .NET является программный комплекс .NET Framework. Он предназначен специально для разработки программ и для поддержки их выполнения на компьютере. Вы не сможете программировать на VB, если на компьютере не установлен .NET Framework.

.NET Framework включает две основные части:

Библиотеку классов .NET Framework. Для начинающего скажу, что если ваша программа – это домик, то классы – это кубики, из которых строится значительная часть домика. Этих классов в библиотеке содержится много, хватит на постройку любой программы.

Common Language Runtime (CLR). Это часть .NET Framework, которая управляет выполнением вашей программы на компьютере и обеспечивает надежность и безопасность этого выполнения. Вы не сможете выполнить на чужом компьютере программу, созданную на VB, если на нем не установлен CLR. Microsoft собирается включить .NET Framework в будущую версию Windows, так что вскоре проблемы с выполнением программ, созданных на VB, на тех компьютерах, где CLR нет, должны исчезнуть.

Чтобы программировать для платформы .NET, нужны инструменты. Фирма Microsoft разработала в качестве этих инструментов серию тесно взаимосвязанных языков программирования. Вот они:

Visual Basic .NET    

Visual C++ .NET    

Visual C# .NET    

Visual J# .NET 

Все они включены в единую программу, которая называется Visual Studio .NET и продается на нескольких дисках. Программа эта включает в качестве своей неотъемлемой части единую среду разработки для всех этих языков и единые вспомогательные средства. Это удобно и должно способствовать легкости переучивания с языка на язык. Инсталляционный пакет Visual Studio .NET включает в себя .NET Framework и все другие необходимые системные программы. Таким образом, установив на свой компьютер Visual Studio .NET, вы можете программировать на любом из упомянутых языков и даже на всех четырех одновременно.



Краткое содержание с рекомендациями


Книга состоит из трех частей и двух приложений:

Часть I. Программирование без программирования.  

У этой части две цели:

Научить самым основным и элементарным приемам работы в VB.

Показать, что в VB можно добиваться впечатляющих результатов практически безо всякого программирования.

Доказательством тому – проекты «Калькулятор» и «Плеер», причем «Калькулятор» получится у вас гораздо ярче и забавнее, чем стандартный калькулятор Windows.

Часть II. Программирование на VB – первый уровень.  Здесь начинается настоящее программирование. Цель этой части – провести вас от создания самых простых программ до сложных. Здесь вы изучаете программирование на VB самым удобным способом – на примерах, то есть по принципу «делай, как я». Вы научитесь создавать небольшие программы, включающие циклы, ветвления, процедуры и использующие графику и звук. Но дело не ограничивается простыми программами. В этой части подробно разбирается создание трех довольно солидных проектов. Заканчивается часть заданием на самостоятельное создание еще одного такого проекта. Предполагается, что после выполнения этого задания у вас должно возникнуть ощущение всесильности, вы должны почувствовать, что теперь вам по плечу программа любого размера, а все, что может понадобиться в будущем – это дополнительные сведения о работе со всем богатством инструментария VB.

Часть III. Программирование на VB – второй уровень.  Цель этой части – снабдить вас этими самыми сведениями об инструментарии VB. Вы познакомитесь с действиями над массивами, коллекциями, строками, файлами, объектами и другими элементами VB. Вы изучите процедуры и функции с параметрами, модули, узнаете, что такое рекурсия и сортировка. Здесь же работа в Интернет, базы данных и, конечно, создание собственных классов объектов, свойств, методов и событий.

Приложение 1. Это теоретический ликбез. Предназначен для тех, кто не знает, как устроен и работает компьютер.

Приложение 2. Это практический ликбез. Предназначен для тех, кто ни разу не садился за компьютер или садился только для игр. Здесь вы научитесь работать с окнами, папками и файлами Windows, вводить в компьютер текст, то есть приобретете все необходимые навыки, чтобы спокойно начать работу в среде Visual Studio .NET.

Не зная материала приложений, вы будете в VB спотыкаться на каждом шагу.

Затем в книге приводятся решения к заданиям и солидный алфавитный указатель.

От автора

Хочу выразить благодарность моим сыновьям: Алексею – за ценное обсуждение теоретических аспектов программирования; Леониду, необходимость консультирования которого по поводу создаваемой им игры The Siege подвигла меня к более глубокому изучению объектов. Но самая большая благодарность – моей жене, Любе, которая взвалила на себя весь груз домашнего хозяйства и несет его уже много лет, наблюдая, как я получаю удовольствие, сидя за компьютером и работая над этой книгой.

К читателю

Буду рад услышать ваши отзывы о книге. Особенно же буду благодарен за критические замечания. Мой e-mail: lukin63@mail.ru.



Математические действия и функции


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

Действия арифметики обозначаются в VB следующим образом:

ДЕЙСТВИЕ

РЕЗУЛЬТАТ

СМЫСЛ

2    +   3

5

плюс

4    -    1

3

минус

2    *    3

6

умножить

10  /  2

5

разделить

17  \  5

3

целочисленное деление (17 делится на 5, получается 3, в остатке 2)

17  Mod  5

2

остаток от деления

37.2  Mod  10

7.2

остаток от деления

2 ^ 3

8

2 3   (два в кубе)   –  возведение в степень

На уроках математики мы привыкли писать  ab+cd, подразумевая: «a умножить на b плюс c умножить на d».  В VB это выражение мы обязаны писать так: a*b+c*d.  Иначе компьютер подумает, что нужно к переменной, имеющей имя ab, прибавить переменную, имеющую имя cd. Во избежание двусмысленности знак умножения положено писать всегда, в том числе и перед скобками. Например,  a*(b+c) вместо a(b+c).

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

затруднен. Поэтому для обозначения деления в программировании выбрана косая черта. Приведенное выражение на VB положено записывать так:  a+1)/(b+1).  Если бы мы не поставили скобок, то выражение получилось бы таким  a+1/b+1, а это неправильно, так как компьютер, как и мы, всегда перед сложением и вычитанием выполняет умножение и деление, поэтому в последнем случае, не зная наших намерений, он бы сначала разделил  1  на  b , а затем к результату  прибавил бы  a  и 1.

Помните, что компьютер выполняет арифметические действия в привычном для нас порядке: сначала вычисляет функции, возводит в степень, извлекает корни, затем выполняет умножение с делением, затем сложение с вычитанием.

Вопрос: когда в выражениях можно ставить скобки? Ответ: всегда, когда у вас возникают сомнения в правильной очередности действий. Лишняя пара скобок не помешает.  Пример: записать на VB выражение:




Запишем пока так:   

(1 + a / (2+a*b)) / (3+a)  *  b

Разберитесь в этой записи. Сложные выражения с большим количеством скобок на глаз воспринимаются с трудом, так как трудно для конкретной скобки увидеть ее законную пару. В этом случае я могу посоветовать идти «от малого к большому», то есть сначала заметить самые малые из взятых в скобки фрагменты выражения. У нас это  (3+a)   и  (2+a*b). Заметьте глазами их скобки. После этого вам будет уже легче заметить скобки для более крупных фрагментов, таких как (1 + a / (2+a*b)) , и т.д.

VB приходит вам на помощь, и в момент ввода очередной скобки выделяет полужирным шрифтом ее и ее пару.

Разобрались? Приведенная запись меня совсем не удовлетворяет, так как мы не знаем, что VB будет делать раньше – делить   (1 + a / (2+a*b))  на  (3+a)  или умножать (3+a)  на b.  А от этого зависит результат. Добавим для верности пару скобок:

 ((1 + a / (2+a*b)) / (3+a))  *  b

Теперь все в порядке.

Точка или запятая в десятичных дробях? Почти во всех языках программирования и уж, конечно, в VB, в программном тексте в окне кода принято в десятичных дробях вместо запятой ставить точку. Пример:  y=62.8  –  шестьдесят две целых восемь десятых. Однако, если помните, результаты в текстовое поле VB выводит с запятой. В чем дело? VS, являясь приложением Windows, частично воспринимает от нее привычку пользоваться в России запятой. Особой проблемы тут нет. В подавляющем большинстве случаев то, что я уже сказал, поможет вам сделать правильный выбор. В остальных случаях применяйте метод «научного тыка» – пользуйтесь, например, точкой, а если VS жалуется или начинает делать что-то не то, меняйте ее на запятую.

Математические функции.  Кроме нескольких действий арифметики VB может выполнять и другие математические действия, например, извлечение квадратного корня. Однако на компьютере нет клавиши со значком
, поэтому в VS имеется специальная функция – Sqrt. Например, корень из 25 обозначается так –   Sqrt(25), корень из a+b так  –   Sqrt(a+b). Здесь Sqrt  –  сокращение от английского выражения Square root –  квадратный корень. Аргумент, то есть то, из чего нужно извлечь корень, записывается в скобках.



Приведу неполный список математических функций VB: Почти все они являются методами класса System.Math.

ФУНКЦИЯ

РЕЗУЛЬТАТ

СМЫСЛ

Math.Abs(-8)

8

Абсолютная величина (модуль) числа

Math.Sqrt(25)

5

Корень квадратный

Math.Round(17.952)

18

Округление до целых

Math.Round(17.48)

17

Math.Round(51.23708, 2)

51,24

Округление до 2 знаков после запятой

Math.Ceiling(45.23)

46

«Потолок» – ближайшее целое число, большее или равное аргументу

Math.Ceiling(-45.23)

-45

Math.Floor(8.92)

8

«Пол» – ближайшее целое число, меньшее или равное аргументу

Math.Floor(-8.92)

-9

Fix(9.47)

9

Целая часть числа (дробная часть отбрасывается)

Fix(-9.47)

-9

Math.Sign(300)

1

Sign для всех положительных чисел равен  1

Math.Sign(0)

0

Sign для нуля равен 0

Math.Sign(-480)

-1

Sign для всех отрицательных чисел равен  -1

Math.Max(29, 44)

44

Максимальное из двух чисел

Math.Min(29, 44)

29

Минимальное из двух чисел

Math.PI

3,14159265358979

Число ?

Math.E

2,71828182845905

Число e – основание натурального логарифма

Math.Exp(2)

7,38905609893065

e2 – число e в заданной степени

Math.Log(35)

3,55534806148941

Натуральный логарифм  ln 35

Math.Log10(1000)

3

Десятичный логарифм  log101000

Rnd

0,7055475

Случайное число из диапазона (0 – 1)

Кроме этого, имеются функции  Sin, Cos, Tan (что означает тангенс), Asin (что означает арксинус), Acos, Atan и некоторые другие.

Работа со случайными величинами описана в 7.3.1.

Проверьте работу интересующих вас математических функций, написав программу такого вида:

Imports System.Diagnostics.Debug, System.Math

Public Class Form1

    Inherits System.Windows.Forms.Form

Windows Form Designer generated code

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click



        WriteLine(PI)

        WriteLine(Round(17.48))

    End Sub

End Class

Проверьте в уме:

Выражение         (2+1)^2                                                при вычислении даст 9

Выражение         1+ (2+8)^3                                           при вычислении даст 1001

Выражение         1+Abs(5-8)                                           при вычислении даст 4

Выражение         2^4+Sqrt(35+1)                                  при вычислении даст 22

Выражение         Sqrt (8+ Floor(41.8))                          при вычислении даст 7

Выражение         21 \ (Round (2.54+1))                        при вычислении даст 5

Задание 9.   

Определите устно, без компьютера, что напечатает процедура:

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim a, b As Double

        a = (2 ^ 2 + 1) * (20 - (2 ^ 2) ^ 2) - 11

        b = Round((a + 2) / 10) * (11 \ (a - 4))

        WriteLine(a ^ 2 + b - 1)

    End Sub

Понятно ли вам, что здесь нужно округлять  ((a+2)/10) , а не  ((a+2)/10)*(11\(a-4)) ? Если непонятно, то внимательно найдите к каждой скобке ее пару, начиная с фрагмента (a+2).

Числовые литералы. Слово «число» имеет слишком широкий смысл. Поэтому целесообразно конкретные числа, встречающиеся в программном тексте в окне кода, иногда называть по-другому. Будем называть их числовыми литералами. Так, в строке

y = 20 * a - Round(-2.54) +  0.01

присутствует три числовых литерала:  20,   -2.54,   0.01. Один из них целый, два – дробных. Литералы еще традиционно называют константами, но у этого термина в VB несколько другое значение.

В дальнейшем понятие литерала я расширю и на нечисловые типы данных.


Меню Visual Basic


В Visual Basic существует два типа меню: встроенные и контекстные.

Встроенные меню

Встроенные меню выводятся в строке меню, над верхней границей окна Visual Basic. Название каждого меню отражает содержащиеся в нем команды. Например, меню "Формат" содержит команды, предназначенные для форматирования формы. Некоторые команды вызывают подменю с более подробными командами. Например, выбор команды "Панели" инструментов из меню "Вид приводит" к появлению подменю с названиями панелей инструментов и командой "Настройка". Эта команда служит для изменения встроенных меню или добавления в строку меню новых команд.

Контекстные меню

Контекстные меню содержат наиболее часто используемые команды и появляются при нажатии правой кнопки мыши или клавиш SHIFT+F10.

Примечание. Сведения о команде или меню можно получить с помощью меню "?".



Метки Свойства: имя, текст, шрифт


Имя и текст. У каждого объекта есть свойство имя (Name). У многих есть свойство Text. Попробуем их изменить и разобраться, зачем они нужны. В предыдущем проекте мы были беспечны и не заботились об именах и тексте. За это мы никак не были наказаны, потому что VB в случае нашей беспечности (как говорится – по умолчанию) сам придает значения свойствам, в том числе именам и тексту. Причем, недолго думая, имя и текст VB делает одинаковыми. без особых причин, просто так удобнее.

Проверим. Выделим форму. Заглянем в окно свойств и найдем там имя (Name) – оно в алфавите выше всех. Мы видим, что имя нашей формы – Form1. Это же слово мы видим в заголовке формы. Изменим имя, скажем, на слово Калькулятор. Изменили. И что же? В заголовке формы ничего не изменилось.

Внимание! Верните форме ее имя Form1, иначе проект не запустится (почему – объясняется в 21.1.2).

Найдем теперь в окне свойств формы свойство текст (Text). Ну конечно – текст на нашей форме – тоже Form1. Изменим его на Мой персональный калькулятор. Ага! Эти же слова появились в заголовке формы.

Теперь займемся первой кнопкой. Выделим кнопку Button1. Заглянем в окно свойств. Мы видим, что имя и текст этой кнопки одинаковы –  Button1. Дадим ей имя Кл_сложения.

Внимание!

Имя должно состоять только из букв, цифр и знаков подчеркивания, причем начинаться имя должно с буквы или знака подчеркивания. Получается, что пробелы запрещены.

Раз в именах запрещены пробелы, я использовал вместо них знак подчеркивания.

Приведенное правило относится к именам не только объектов, но и остальных элементов VB  –  свойств, методов, переменных, пространств имен и т.д. Подробнее об именах см. в 5.3.4.

Текст нашей кнопки должен состоять из единственного символа +. Найдем +

на клавиатуре и введем его значением свойства Text .

Я думаю, вы уже догадываетесь, зачем нужны имя и текст и в чем их разница. На поверхности объекта мы видим не имя, а текст. Текст виден всем (Штирлиц), а имя остается скрытым (полковник Исаев). Еще аналогия: Мальчик идет по улице, на его рубашке – текст «Эммануил». А зовут его Коля, но это на рубашке не написано.


Зачем нужно имя? Затем, что в программе мы обращаемся к объекту именно по имени, а не по тексту.

Зачем мы изменили текст, нам ясно. Чтобы всем были видны удобные слова или символы. А почему надо было менять имя? Ну, хотя бы потому, что оператор

Кл_сложения.Width=60

как-то понятнее, чем

Button1.Width=60

Метки. А теперь займемся пояснительными надписями в левой части калькулятора (Первое число, Второе число, Результат). Для этого нам понадобится новый элемент управления – Label (метка), который в основном для пояснений и применяется. Найдите Label в окне Toolbox и поместите на форму три метки. Пока они имеют такой вид: Label1,  Label2, Label3 .

Задайте, пожалуйста, всем объектам проекта следующие свойства Имя и Текст:

Объект

Имя

Текст

Form1

Form1

Мой персональный калькулятор

Button1

Кл_сложения

+

Button2

Кл_вычитания

-

Button3

Кл_умножения

х        (это просто буква Икс)

Button4

Кл_деления

:

TextBox1

Число1

TextBox2

Число2

TextBox3

Результат

Label1

Label1

Первое число

Label2

Label2

Второе число

Label3

Label3

Результат

Пояснения: Поскольку мы хотим, чтобы в начале работы с калькулятором в текстовых полях было пусто, сотрем в окне свойств значения свойства Text для всех трех полей. Мы не станем затрудняться и менять имена меткам, потому что в программе эти имена никак участвовать не будут

Когда вы запустите ваш проект, он должен выглядеть так, как на Рис. 3.4.



Рис. 3.4

Шрифт. Пусть мы хотим, чтобы слово «Результат» было побольше и пожирней. Щелкнем по метке Label3. Найдем ее свойство Шрифт (Font) и щелкнем по плюсу. Из свойства выскочит с десяток свойств, в него входящих (размер шрифта, жирность и т.д.), и вы можете изменять каждое из них. Но лично мне кажется более удобным другой способ: Щелкнем по свойству Font. В поле значения появилась кнопочка с троеточием – это всегда приглашение к дальнейшему разговору (эту кнопку вы можете видеть на Рис. 3.3). Щелкнем по ней – перед нами появилось так называемое диалоговое окно (Рис. 3.5), предлагающее настроить шрифт текста, то есть выбрать размер шрифта (Size), начертание (Font style), название (гарнитуру, то есть рисунок букв) шрифта (Font) и кое-что другое. Начертание может быть обычным (Regular), курсивом (Italic), полужирным (Bold) и полужирным курсивом (Bold Italic). Среди гарнитур попадаются любопытные. Выберите размер и прочее по вкусу, после чего нажмите ОК.



Рис. 3.5

Значки арифметических действий на кнопках получились маловаты. Увеличьте их размер и сделайте пожирнее.

Все! Проектирование первой версии калькулятора закончено! Теперь калькулятор выглядит практически так, как задано на Рис. 3.1. Можно приступать к программированию.


Не программа, а проект


Visual Studio .NET принадлежит к так называемым средам визуальной разработки программ. Это значит, что она берет на себя значительную часть работы по написанию скучных команд, предоставляя программисту вместо этого «собирать домик из кубиков».

Для пояснения рассмотрим аналогию. Вообразите, что вы не программу на VB пишете, а собираете на столе игрушечную железную дорогу. В вашем распоряжении находятся объекты: стол, рельсы, паровозы, вагоны, светофоры, машинисты, стрелочники и т.д. Чтобы игрушка заработала, вам нужно выполнить 3 этапа:

1.   Собрать ее вручную, то есть поместить на свои места и правильно соединить рельсы, вагоны и т.д.

2.   Наша игрушка очень интеллектуальная, то есть поведение многих объектов (таких как машинисты, стрелочники, светофоры и другие) – сложное и осуществляется по программе. Поэтому вам нужно написать для каждого из таких объектов программу поведения. Например, в программе для машиниста одна из команд может быть такой: «Если впереди на светофоре красный свет – тормози», а в программе для светофора – такой – «Если два поезда опасно сблизились – зажигай красный свет» и так далее.

3.   Запустить игрушку и посмотреть, как она работает. Если произошло крушение или что-нибудь еще пошло не так, как надо, значит или вы неправильно собрали игрушку, или написали неправильные программы, или и то и другое вместе. Вы исправляете ошибки и там и там и снова запускаете игрушку. Снова смотрите, снова исправляете. И так до тех пор, пока все не заработает нормально. Этот процесс называется отладкой.

Современный программист, работающий в средах визуальной разработки программ, выполняет те же три этапа. На 1 этапе он вручную расставляет на экране компьютера объекты, которые будут выполнять его программу, на 2 этапе пишет программу, на 3 этапе запускает ее. Что конкретно я имею в виду под расстановкой объектов, вы узнаете в следующем разделе, а сейчас остается сказать, что из-за 1 этапа работа программиста теперь напоминает работу конструктора-проектировщика и продукт работы программиста называют теперь не программой, а проектом. Хотя часто пользуются и прежним термином. Я тоже, наверное, буду их путать. Правда, обещаю, что не в ущерб смыслу.

Готовый проект будем называть приложением Windows или просто приложением. Это значит, что эта программа будет работать на компьютерах с запущенной операционной системой Windows (говорят: программа работает из-под Windows). Она не будет работать из-под других операционных систем, что вряд ли можно назвать недостатком. Таковы почти все современные программы. А у «всеядных» программ – свои минусы.

Еще один термин для готового проекта – продукт. Действительно: продукт работы программиста – продукт.



Объявление переменных величин


Когда на бал к графине N приезжает герцог M, то слуга объявляет на весь зал: "Герцог M!", отчего все гости сразу узнают, что перед ними именно герцог, а не какой-нибудь там барон, и обращаются к нему соответственно. Все хорошо, все прилично. Если бы слуга проморгал и объявил гостя, забыв указать его титул, то в большинстве случаев тоже ничего страшного не произошло. Однако иногда все же могли бы приключиться досадные недоразумения. Например, к герцогу могли бы обратиться так: «Эй, человек, шампанского!», а это уже скандал!

Бал – это проект. Гости – это переменные. Слуга – это программист. До сих пор мы объявляли всех гостей. И делали это оператором Dim. Правда, объявляли демократично, без указания титулов. Однако никаких эксцессов не было, все шло как по маслу. Это потому, что VB умный, он по глазам определяет, кто герцог, а кто нет. Но не у каждого гостя глаза говорят правду. Нам нужно как следует в этом разобраться. Но прежде изучим еще один полезный и приятный элемент VB –  InputBox.



Object Browser


Object Browser – инструмент для обзора и поиска объектов и составляющих их свойств, методов и прочих компонент, а также  пространств имен, в которых они расположены. То есть для обзора и поиска всего богатства библиотеки классов .NET Framework. И не только ее. Таким образом, Object Browser – это что-то вроде справочной системы.

Щелкнем View ® Other Windows ® Object Browser. Перед вами откроется окно Object Browser, в левой панели которого Objects

вы увидите несколько строк (Рис. 4.17).

Рис. 4.17

Сборки. Каждая строка здесь является так называемой сборкой. Сборка – это файл (бывает – несколько файлов), хранящий в себе одно или несколько пространств имен. На рисунке вы видите те сборки, пространства имен которых в настоящий момент находятся в распоряжении вашего проекта.

Обратите внимание, что среди прочих сборок указана и сборка вашего проекта. О ней поговорим позже, а сейчас можете не обращать на нее внимания.

Остальные сборки, которые вы видите на рисунке, служат вместилищем пространств имен библиотеки классов .NET Framework. Не вся библиотека классов .NET Framework в настоящий момент подключена к вашему проекту, а лишь ее самые широко используемые части. Сделано это из экономии. Соответственно, на рисунке вы видите далеко не все сборки библиотеки классов .NET Framework. Но вы можете при желании быстро подключить дополнительные сборки (см. 25.2.2).

Файл сборки обычно имеет расширение dll или exe. По назначению сборки близки к широко известным библиотекам dll, но это не одно и то же.

В одной сборке может находиться несколько пространств имен и наоборот – одно пространство имен может располагаться в нескольких сборках. Часто сборка содержит пространство имен, одноименное с ней.

Пример путешествия по Object Browser. Давайте доберемся в Object Browser до метода Write класса Debug. Щелкните по плюсу в строке сборки System. Мы видим (Рис. 4.18), что внутрь сборки System входит несколько пространств имен. Каждое из них помечено парой фигурных скобок {}.

Рис. 4.18


Особенность отображения в этом окне заключается в том, что видны сразу же все пространства имен, находящиеся в сборке, включая и пространства вложенные в другие пространства. Так, вы видите и пространство имен System, и входящее в него пространство имен System.ComponentModel, и пространства имен, входящие в System.ComponentModel.

Щелкните по плюсу в пространстве имен System.Diagnostics, которое предоставляет нам разнообразные инструменты, в том числе и для отладки программы. Мы видим (Рис. 4.19) внутри пространства имен большое количество объектов.



Рис. 4.19

Щелкните по классу Debug (по нему самому, а не по плюсу), чтобы выделить его. Мы видим (Рис. 4.20) в правой панели Object Browser компоненты класса Debug: свойства и методы. В нижней части окна вы видите краткое описание выделенного элемента. Со временем мы научимся понимать эти описания.



Рис. 4.20

Имейте в виду, что не все компоненты, входящие в данный класс, показаны в правой панели. Многие, доставшиеся «по наследству» от родительских классов (см. 22.7) не указаны.

Еще один пример: Доберемся до цвета Yellow объекта Color. Щелчками по минусикам сверните все строки в левой панели окна Object Browser, чтобы она приобрела первоначальный вид. Затем щелчком по плюсу зайдите в сборку System.Drawing, в ней зайдите в пространство имен System.Drawing, в нем найдите объект (структуру) Color и выделите ее щелчком. В правой панели вы увидите множество свойств этой структуры, имена которых являются названиями цветов. Среди них вы увидите и Yellow.

Как я уже говорил, некоторые пространства имен могут частями встречаться сразу в нескольких сборках. Так, части пространства имен Microsoft.VisualBasic

мы видим и в сборке Microsoft Visual Basic (по-другому – Microsoft Visual Basic.NET Runtime) и в сборке System, части пространства имен System мы видим и в сборке System в сборке mscorlib.

Замечание. Обратите внимание, что в Object Browser имеется много свойств, которых нет в окне свойств, так как здесь приведены и те свойства, которые имеют смысл только в режиме [run]. Например, свойство SelectionLength объекта TextBox, которое выдает длину фрагмента текста, выделенного нами в текстовом поле.

Поиск. Очень удобна возможность поиска в Object Browser нужных нам компонентов. Для этого используется кнопка поиска 
. Пусть вы забыли, где находится Beep. Вы щелкаете по кнопке поиска, затем в появившемся окне поиска (Рис. 4.21) набираете слово Beep, нажимаете Find и в появившемся ниже окне видите результат:

Microsoft.VisualBasic.Interaction



Рис. 4.21


Общие свойства


Сейчас я перечислю популярные и легкие свойства знакомых нам объектов, а именно: формы, кнопок, текстовых полей, меток. Другие вам понадобятся не скоро. Повторю, что эти свойства имеются и у многих других элементов управления.

Мы с вами уже познакомились в окне свойств со свойствами Name, Text, Width, Font. Познакомимся с другими.

Внешний вид

BackColor – цвет поверхности объекта – знакомое свойство. Выделим форму. Щелкнем по этому свойству. В поле значения появилась кнопочка с черной треугольной стрелкой. Такие кнопки есть во многих свойствах для удобного выбора их значений. Щелкнем по ней – перед нами появилось окно с тремя закладками (Рис. 3.6).

Рис. 3.6

Выберем цвет в закладках Custom или Web и щелкнем по нему. Форма, кнопки и метки (но не текстовые поля) приобрели этот цвет. Выделите кнопку и аналогично установите ей какой-нибудь другой цвет. То же самое проделайте с меткой и текстовым полем. О закладке System поговорим попозже.

Если предложенных цветов вам не хватает, щелкните правой клавишей мыши по одному из белых квадратиков в нижней части закладки Custom. Перед вами откроется окно определения цвета (см. Рис. 3.7).

Рис. 3.7

Щелчком по большому разноцветному квадрату вы выбираете цвет, а передвигая вверх-вниз движок в правой части окна, выбираете яркость цвета. В поле Color|Solid вы видите образец получившегося цвета. Нажимайте Add Color.

ForeColor – цвет текста и линий, рисуемых на объекте. Настраивается аналогично BackColor. Попробуйте сделать текстовое поле желтым с синим текстом.

BorderStyle (для текстовых полей и меток) – стиль границы. Определяет характер границы и объемность вида объекта.

FlatStyle (для кнопок) – примерно то же, что BorderStyle для текстовых полей и меток.

FormBorderStyle (для формы) – с одной стороны это примерно то же, что BorderStyle для текстовых полей и меток. Но с другой стороны здесь 7 вариантов, и заведуют они не только стилем границы, но и количеством кнопок в правом верхнем углу формы, и возможностью изменять размеры формы в режиме [run].


Положение и размер

Size (размер).  Состоит из свойств Width (ширина)  и Height (высота). Высота формы и элементов управления настраивается совершенно аналогично ширине. Попробуйте.

Задавать местоположение при помощи координат мы научимся чуть ниже, в 3.5.

Locked (заперт). Обычно значение этого свойства – False (что значит – Ложь). Если установить его в True (что значит – Правда), то элемент управления в режиме проектирования нельзя будет таскать по форме и изменять его размеры (а у формы – только изменять размеры). Это полезно, если вы боитесь случайным движением мыши сместить тщательно установленный элемент управления[§].

Anchor (якорь, привязка). Когда мы в режиме [run] изменяем размеры формы, элементы управления остаются на месте. Это значит, что они сохраняют свое расстояние до левого

и верхнего краев формы, а не до правого и нижнего. Мы изменим эту ситуацию для данного элемента управления, если изменим его свойство Anchor. Измените, например, это свойство для кнопки. Щелчками по каждой из 4 полосок (Рис. 3.8) вы приказываете поддерживать или не поддерживать постоянным расстояние от кнопки до соответствующего края формы. Сделайте для интереса темными все 4 полоски. Запустите проект. Изменяйте размеры формы и наблюдайте на поведением кнопки.



Рис. 3.8

Dock (пришвартоваться, приклеиться). Обычно значение этого свойства – None (что значит – Отсутствует). Если выбрать для элемента управления одно из предложенных значений этого свойства, то он будет «приклеен» к одному из краев формы, как бы мы ни меняли ее размеры. Так обычно приклеены полосы прокрутки к краям окна.

Другие свойства

Cursor (курсор, значок мыши, указатель мыши). Это свойство позволяет вам менять внешний вид мышиного курсора, когда он находится над объектом.

Выделите кнопку и, зайдя в окно свойств, выберите для ее свойства Cursor какое-нибудь значение из списка (например, курсор в форме креста). Запустите проект. Поместите курсор мыши на объект. Курсор приобрел вид креста.

Если вы зададите вид мышиного курсора для формы, то он будет иметь заданный вид над всей поверхностью формы и теми объектами на форме, для которых он еще не изменен (кроме текстовых полей).



Поиграли со значками мышиного курсора? А теперь верните все, как было. Не стоит без дела отвыкать от стандартного интерфейса[**]

– это рассеивает внимание. Экзотика хороша в Африке.

Visible (видимый). Обычно значение этого свойства - True (что значит – Правда). Если установить его в False (что значит – Ложь), то элемент управления перестанет быть виден в режиме работы. Но будет слушаться программу.

Enabled (в рабочем состоянии). Обычно значение этого свойства – True («правда»). Если установить его в False («ложь»), то объект установится в нерабочее состояние, то есть виден будет, но не будет работать и им нельзя будет пользоваться. Так, в текстовое поле нельзя будет вводить текст, на кнопку нельзя нажимать, текст объектов приобретет бледно-серый оттенок. Но программу объект слушаться будет. Установив в нерабочее состояние форму, вы тем самым устанавливаете в нерабочее состояние все элементы управления на ней.

TextAlign (выравнивание текста на поверхности объекта). Создайте высокую и широкую кнопку и выберите для нее в окне свойств один из 9 вариантов значений этого свойства (Рис. 3.9).



Рис. 3.9

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

Одновременная настройка свойств у нескольких элементов управления. Очевидно, что все 4 кнопки калькулятора должны иметь одинаковые размеры, шрифт и цвет. Настраивать их по-отдельности для каждой кнопки скучно. VS позволяет легко настраивать свойства сразу у нескольких элементов управления. Все, что нужно предварительно сделать – это выделить эти несколько элементов.

Чтобы выделить несколько элементов, просто обведите их рамочкой. Или, щелкнув по первому из них, щелкайте по остальным при нажатой клавише Ctrl.

После того, как элементы выделены, окно свойств показывает только те свойства, которые являются общими для всех выделенных элементов. А значения свойств показываются только там, где они одинаковы для всех выделенных элементов. Например, свойство Location (местоположение) не показывает значения, так как местоположение у кнопок на форме разное.

Измените сейчас в окне свойств свойство BackColor. Оно изменится у всех выделенных элементов. Запишите в поле значений свойства Size два числа через точку с запятой:  100; 70  – все выделенные элементы приобретут указанный размер.

Группа выделенных элементов позволяет таскать себя по форме и изменять размеры элементов движением мыши. Снимается выделение клавишей Esc.


Оглядимся вокруг


Ну вот, с переменными величинами мы разобрались. Узнали что-то. А научились ли мы в результате этого знания делать что-нибудь новенькое и интересное? Вроде, нет. Ничего особенно приятного, за исключением, может быть, диалога с компьютером. Нда-а-а… Зачем же все мучения?

Вот зачем: Материал этой главы – патрон без пистолета, ненужная сама по себе вещь. А вот материал следующих глав – это самые разные пистолеты без патронов.



Окна среды Visual Studio NET


До сих пор я не рассматривал систематически окна, панели инструментов и меню VS. И вы, наверное, уже столкнулись в связи с этим с некоторыми проблемами. Для дальнейшего движения вперед необходимо рассмотреть их более подробно. Начнем с окон. Их в среде VS довольно много, глаза разбегаются и создается ощущение стога сена, в котором нужно найти иголку Поэтому на смысле разных окон я остановлюсь позже, а сначала мы должны научиться управляться с ними, независимо от их смысла: открывать, закрывать, передвигать, настраивать.



Окно диалога Добавление контрольного значения


Используется для ввода контрольного выражения. Вводимое выражение может быть переменной, свойством, вызовом функции или любым другим допустимым в Basic выражением. Контрольные выражения в области Контрольные окна отладки обновляются каждый раз при входе в режим прерывания, а также после выполнения каждой инструкции в окне проверки.

Допускается перетаскивание с помощью мыши выделенного выражения из окна модуля в область Контрольные окна отладки.

Важно. При выборе контекста контрольного выражения всегда следует использовать самую узкую область определения, удовлетворяющую поставленной задаче. Выбор всех процедур или всех модулей может значительно замедлить выполнение, поскольку контрольное выражение вычисляется после выполнения каждой инструкции. Выбор в качестве контекста отдельной процедуры влияет на выполнение только в те моменты, когда эта процедура находится в списке активных вызовов, что можно наблюдать, выбрав команду Стек вызова из меню Вид.

Параметры окна диалога

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

Контекст Задает область определения переменных в контрольном выражении.

Процедура - Отображает имя процедуры, в которой определено выделенное выражение (по умолчанию). Задает процедуру(ы), в которых вычисляется контрольное выражение. Допускается выбор всех процедур либо отдельной процедуры.

Модуль - Отображает имя модуля, в котором определено выделенное выражение (по умолчанию). Допускается выбор всех модулей либо отдельного модуля для вычисления значения контрольного выражения.

Проект - Отображает имя текущего проекта. Вычисление выражений вне текущего проекта невозможно.

Тип контрольного значения Определяет реакцию Visual Basic на контрольное выражение.

Контрольное выражение - Отображает в области Контрольные окна отладки выражение и его значение. При входе в режим прерывания значение этого выражения автоматически обновляется.

Останов, если значение истинно - Выполнение программы автоматически прерывается, когда значение выражения становится истинным или ненулевым (недопустимо для строковых выражений).

Останов при изменении значения - Выполнение программы автоматически прерывается при изменении значения выражения в указанном контексте.



Окно диалога Изменение контрольного значения


Используется для удаления или изменения содержания или типа контрольного выражени.

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

Параметры окна диалога

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

Контекст Задает область определения переменных в контрольном выражении.

Процедура - Отображает имя процедуры, в которой определено выделенное выражение (по умолчанию). Задает процедуру(ы), в которых вычисляется контрольное выражение. Допускается выбор всех процедур либо отдельной процедуры.

Модуль - Отображает имя модуля, в котором определено выделенное выражение (по умолчанию). Допускается выбор всех модулей либо отдельного модуля для вычисления значения контрольного выражения.

Проект - Отображает имя текущего проекта. Вычисление выражений вне текущего проекта невозможно.

Тип контрольного значения Определяет реакцию Visual Basic на контрольное выражение.

Контрольное выражение - Отображает в области Контрольные окна отладки выражение и его значение. При входе в режим прерывания значение этого выражения автоматически обновляется.

Останов, если значение истинно - Выполнение программы автоматически прерывается, когда значение выражения становится истинным или ненулевым (недопустимо для строковых выражений).

Останов при изменении значения - Выполнение программы автоматически прерывается при изменении значения выражения в указанном контексте.

Удалить Удаляет контрольное выражение.