В этой лекции вы узнаете, как:
В лекции 3 элементы управления Microsoft Visual Studio использовались для получения ввода от пользователя, работающего с программой. В этой лекции вы узнаете, как предоставить пользователям разные варианты, используя для этого профессионально выглядящие меню и диалоговые окна. Меню расположено в строке меню и представляет собой список команд, объединенных в логические группы. Когда пользователь нажимает на названии группы, то в раскрывающемся списке появляются команды этого меню. Большинство команд меню исполняется немедленно после нажатия; например, если пользователь выбирает в меню Edit (Правка) команду Copy (Копировать), то информация немедленно копируется в буфер обмена. Однако если команда меню оканчивается многоточием (...),Visual Basic выводит диалоговое окно, запрашивающее перед исполнением команды дополнительную информацию. В этой лекции вы узнаете, как применять элемент управления MainMenu для добавления в вашу программу стандартных меню и как применять два элемента управления диалоговых окон.
ShowDialog и свойство DialogResult, что упрощает создание собственных форм, которые работают как стандартные диалоговые окна.Элемент управления MainMenu - это инструмент, с помощью которого в программу можно добавить меню и настроить их в окне Properties (Свойства). С помощью MainMenu можно добавлять новые меню, изменять и удалять существующие. В меню можно добавить специальные возможности: клавиши ускоренного доступа, отметки "включено/выключено" и сочетания клавиш. После того, как меню добавлено в форму, для обработки команд меню использовать процедуры обработки событий. В следующем упражнении с помощью элемента управления MainMenu мы создадим меню Clock, команды которого показывает текущую дату и время.
Выберите элемент управления MainMenu на закладке Windows Forms окна области элементов и нарисуйте на поле формы элемент управления.
Не беспокойтесь по поводу его расположения - Visual Studio автоматически передвинет этот элемент управления в нужное место и задаст его размер. Форма будет выглядеть примерно так.

Объект главного меню появляется не на поле формы, а под ней. В предыдущих версиях Visual Basic все объекты показывались на самой форме. Но в Visual Studio .NET невидимые объекты, в том числе меню и таймеры, показываются в среде разработки на отдельной панели, которая называется областью компонентов. На этой панели их можно выделять, настраивать их свойства или удалять.
В дополнение к объекту меню, расположенному в области компонентов, создаваемое в Visual Studio .NET меню графически изображается в верхней части формы. Чтобы ввести название меню, нужно щелкнуть по полю Type Here (Прототип для текста). После этого можно добавлять заголовки подменю и других меню, выбирая нужные поля с помощью стрелок и вписывая туда требуемые названия. Позже вы всегда сможете вернуться к этому встроенному Menu Designer (Конструктору меню) и отредактировать то, что уже сделано, или добавить новые пункты. Объект главного меню очень хорошо настраивается и позволяет создать решения с использованием меню, не уступающие лучшим Windows-приложениям.
Щелкните на тэге Type Here (Прототип для текста), введите Дата, а затем нажмите клавишу (Enter). Слово "Дата" стало названием первого меню, и появились два новых поля Type Here (Прототип для текста), позволяющие создать элементы подменю или команды в меню Дата и дополнительные меню. В данный момент выберите подменю.
Совет. Если меню с формы исчезает, выберите объект MainMenu1 в области компонентов, и оно снова появится.
Наберите слово Время, а затем нажмите клавишу (Enter). Теперь у вас есть меню Дата с двумя командами меню - День и Время. Если необходимо, можно вводить дополнительные меню и команды, но для данного примера этого достаточно. Форма будет выглядеть примерно так.

В большинстве приложений команды меню можно вызывать с помощью клавиатуры. Например, чтобы в Visual Studio открыть меню File (Файл), нужно нажать клавишу (Alt) а затем (Ф). Когда меню File (Файл) откроется, то, чтобы выполнить команду Print (Печать), достаточно нажать на клавиатуре (П). Клавиши, которые вы нажимаете вместе с (Alt) или в открытом меню, называются клавишами доступа (или клавишами быстрого доступа ). В конкретном элементе меню клавишу доступа можно определить по подчеркнутому символу.
Чтобы добавить в главное меню клавишу доступа, активизируйте Menu Designer (Конструктор меню) и введите перед требуемой буквой в имени меню символ "амперсанд" (). Во время выполнения программы соответствующая клавиша на клавиатуре будет работать как клавиша быстрого доступ к меню.
Совет. По умолчанию Windows 2000 не подчеркивает в программе клавиши доступа до тех пор, пока пользователь не нажмет в первый раз клавишу (Alt). Это поведение можно отключить на закладке Effects (Эффекты) в свойствах Display (Экран).
Сейчас мы добавим клавиши доступа для меню Дата.
По соглашению, в приложениях для Microsoft Windows каждое название и команды меню начинаются с заглавной буквы. Часто первыми двумя командами меню в строке меню являются Файл (File) и Правка (Edit), а последним является Справка (Help). Часто встречаются названия команд View (Вид), Формат (Format) и Окно (Window). Не имеет значения, какие меню и команды вы используете в приложении - главное, чтобы они были понятны и соответствовали своим названиям. Меню и команды должны быть просты в использовании и иметь как можно больше общего с другими приложениями для Windows. При создании элементов меню придерживайтесь следующих рекомендаций.
Checked должно иметь значение True.Нажмите клавишу (Enter). Нажатие на (Enter) фиксирует изменения в тексте. Ваша форма будет выглядеть примерно так.

Теперь с помощью Конструктора меню давайте изменим порядок команд День и Время. Изменение порядка элементов меню - это важный навык, так как это требуется довольно часто.
Мы закончили создавать пользовательский интерфейс для меню Дата. Теперь нужно запрограммировать процедуры, соответствующие строкам меню, для обработки выбора пользователя.
Совет. Чтобы удалить из меню ненужный элемент, щелкните на этом элементе, а затем нажмите клавишу (Delete).
После того, как меню и команды настроены с помощью объекта MainMenu, они также становятся объектами программы. Чтобы заставить объекты меню выполнять осмысленную работу, необходимо написать для них процедуры обработки событий. Процедуры обработки событий меню обычно содержат операторы, которые показывают информацию в пользовательском интерфейсе, обрабатывают ввод или изменяют одно или несколько свойств меню. Если для обработки команды требуется получить дополнительную информацию, то процедура обработки события обычно открывает диалоговое окно. Для этого используется один из элементов управления диалоговых окон Windows Forms или один из элементов управления для ввода, с которыми мы работали в лекции 3.
В следующем упражнении мы добавим к форме объект надпись, показывающую результат работы команд Время и День из меню Дата.
Label.Label, и в коде программы у него будет имя Label1.Задайте для этой надписи следующие свойства:
| Объект | Свойство | Значение |
|---|---|---|
| Label1 | BorderStyle | FixedSingle |
| Font | Microsoft Sans Serif, жирный , 14 пунктов | |
| Text | (empty) | |
| TextAlign | MiddleCenter |
Ваша форма должна выглядеть примерно так.

Теперь добавим операторы в процедуры обработки событий для обработки команд меню Время и День.
MenuItem3_Click. Имя MenuItem3_Click означает, что пункт Время был третьим из созданных в этом проекте (вслед за Дата и День ), а слово _Click напоминает, что это процедура события, которая запускается при щелчке на этом элементе меню. Пока мы сохраним это название меню, хотя тут следует отметить, что оно недостаточно интуитивно понятно. С помощью свойства Name можно задавать для объектов свои собственные имена, которые описывают их назначение в программе более точно. В предыдущих упражнениях мы на это не отвлекались, но далее в этой лекции мы определим имена меню, которые будут понятнее и будут иметь более профессиональный вид.Добавьте в программу следующий оператор
Label1.Text = TimeString
Этот оператор присваивает текущее время (по системным часам) свойству Text объекта Label1, которое, собственно, и показывается в виде надписи. Предыдущий текст в объекте Label1, если он имелся, будет заменен. TimeString - это свойство, в котором содержится текущее время, отформатированное для показа на экране или для печати. В программах с помощью свойства TimeString всегда а можно показать время с точностью до секунд. ( TimeString заменил оператор QuickBasic TIME$.)
Совет. Свойство TimeString в Visual Basic возвращает текущее системное время. Системное время можно установить из Панели управления Windows с помощью процедуры Дата и время. Формат системного времени можно изменить там же в Региональных настройках.
MenuItem2_Click. Эта процедура исполняется тогда, когда пользователь щелкает в меню Дата на команде День.Добавьте в программу следующий оператор
Label1.Text = DateString
Этот оператор присваивает сегодняшнее число (по системным часам) свойству Text объекта Label1, которое показывается в виде надписи. Предыдущий текст в объекте Label1, если он имелся, будет заменен. Свойство DateString точно так же доступно для широкого использования в программах. Если в форме требуется показать текущую дату, присвойте свойству Text значение DateString.
Совет. Свойство DateString в Visual Basic возвращает текущую системную дату. Ее можно установить в разделе Дата и время Панели управления; формат системного времени можно изменить там же в Региональных настройках.
Чтобы закончить ввод строки, нажмите клавишу со стрелкой вниз. Ваш экран должен выглядеть примерно так.

Мы закончили создавать программу, в которой используется меню. Теперь нужно сохранить изменения в проекте и запустить его.
Примечание. Полную версию программы можно найти по адресу c:\ vbnet03sbs\Гл.4\menu.
Выберите команду Время. В поле надписи появится текущее системное время, как показано ниже.

Теперь посмотрим, какое сегодня число.
Поздравляем! Вы создали работающую программу, в которой используются меню и клавиши доступа. В следующем упражнении вы узнаете, как использовать меню для показа стандартных диалоговых окон.
Чтобы получить от системных часов информацию о времени, можно использовать их различные свойства и функции. Информация о времени может потребоваться в программах при создании собственных календарей, часов или оповещений. В следующей таблице содержится перечень наиболее полезных функций системных часов. За дополнительной информацией обращайтесь к справочной системе Visual Studio.
| Свойство или функция | Описание |
|---|---|
TimeString |
Возвращает от системных часов текущее время. |
DateString |
Возвращает от системных часов текущую дату. |
Now |
Возвращает закодированное значение, содержащее текущие дату и время. Наиболее полезно как аргумент для других функций системных часов. |
Hour (time) |
Возвращает количество часов для указанного времени (от 0 до 24). |
Minute (time) |
Возвращает количество минут для указанного времени (от 0 до 59). |
Second (time) |
Возвращает количество секунд для указанного времени (от 0 до 59). |
Day (date) |
Возвращает целое число, представляющее собой день месяца (от 1 до 31). |
Month (date) |
Возвращает целое число, представляющее собой месяц (от 1 до 12). |
Year (date) |
Возвращает год для указанной даты. |
Weekday (date) |
Возвращает целое число, представляющее собой день недели (по американской системе: 1 - это воскресенье, 2 - это понедельник, и т.д.). |
В Visual Studio на закладке Windows Forms окна области элементов имеется семь стандартных элементов управления для диалоговых окон. Они предоставляются в готовом виде, так что вам вряд ли потребуется создавать собственные диалоговые окна для типичных задач, таких как открытие файлов, сохранение файлов или печать. Во многих случаях нужно написать код, который подключает эти диалоговые окна к программе, но пользовательский интерфейс уже сделан, и он соответствует стандартам для общих задач в приложениях Windows. Все семь имеющихся элементов управления для стандартных диалоговых окон перечислены в следующей таблице. Они во многом соответствуют объектам, которые в Visual Basic 6 предоставлялись в составе элемента управления CommonDialog, но имеют и некоторые отличия. Так, вы не найдете в таблице элемент управления PrintPreviewControl, но в случае необходимости его заменит элемент управления PrintPreviewDialog.
| Название элемента управления | Назначение |
|---|---|
OpenFileDialog |
Получает названия диска, папки и файла для существующего файла. |
SaveFile (Файл) Dialog |
Получает названия диска, папки и файла для нового файла. |
FontDialog |
Позволяет выбрать новый шрифт и его стиль. |
ColorDialog |
Позволяет выбрать цвет из палитры. |
PrintDialog |
Позволяет задать параметры печати. |
PrintPreviewDialog |
Отображает диалоговое окно предварительного просмотра материала для печати, так, как это делает Microsoft Word. |
PageSetupDialog |
Позволяет управлять параметрами страницы: полями, размером бумаги и ее ориентацией. |
В следующих упражнениях мы добавим в программу Menu новые меню и попрактикуемся в использовании элементов управления OpenFileDialog и ColorDialog. Вы можете использовать либо свой существующий проект Menu, либо, если вы его не создавали, загрузить проект Menu из папки с файлами практических занятий. (Окончательная версия программы переименована в Dialog, чтобы сохранить на диске оба проекта.)
Если вы не создавали проект Menu, в меню File (Файл) выберите Open (Открыть), затем Project (Проект), в папке c:\vbnet03sbs\Гл.4\menu выберите файл проекта Menu.vbproj, а затем нажмите кнопку Open (Открыть). Если форма не видна, дважды щелкните мышью в Solution Explorer (Обозревателе решений) на Form1.vb.
Добавьте в область компонентов, в которой уже находится объект главного меню MainMenu1, два элемента управления диалоговых окон. Элемент управления OpenFileDialog потребуется, чтобы открывать файлы с точечными изображениями, а элемент управления ColorDialog позволит изменять цвет для показа даты. В процессе разработки элементы управления диалоговых окон помещаются в области компонентов, а не на поле формы, так как во время выполнения они на форме не появляются.
В области элементов на закладке Windows Forms выберите элемент управления OpenFileDialog, а затем щелкните мышкой в области компонентов, где уже есть объект MainMenu1.
Совет. Если вы не видите OpenFileDialog в области элементов, то он может быть за пределами видимости. Чтобы промотать список в области элементов, щелкните на нижней стрелке прокрутки, находящейся рядом с закладкой
В области компонентов появится объект диалогового окна для открытия файла.
В области элементов на закладке Windows Forms выберите элемент управления ColorDialog, а затем щелкните на области компонентов, расположенной ниже поля формы. Теперь область компонентов выглядит так.

Как и объект главного меню, объекты с диалогами открытия файла и выбора цвета можно настроить, задав их свойства.
Теперь с помощью элемента управления PictureBox создайте область для показа изображений. Этот объект показывает в поле формы содержимое из файлов изображений. На этот раз мы выведем на поле формы картинку, используя диалоговое окно для открытия файла.
PictureBox.SizeMode этого объекта выберите значение StretchImage.Теперь с помощью Menu Designer (Конструктора меню) добавьте в вашу программу меню File (Файл).
Чтобы передвинуть меню Файл на первое место, просто перетащите его на меню Дата. В Menu Designer (Конструкторе меню) целые меню можно перемещать точно так же, как и отдельные команды внутри меню. Имеет смысл сделать меню Файл первым меню программы. Ваша форма должна выглядеть примерно так.

Как уже упоминалось в этой лекции, имена объектов формы, в том числе и команд меню, можно изменить, изменив для каждого из них свойство Name. Свойство Name не изменяет внешнего вида объекта во время выполнения программы, то, что объект показывает пользователю, зато оно используется для обращения к объектам в тексте программы.
Важное замечание. Имя любого объекта (его свойство Name) в программе на Visual Basic должно состоять из латинских букв или цифр. Замена имени на русское или использование букв русского алфавита недопустимо, так как может вызвать ошибки в программе.
Давайте изменим имена объектов из меню Файл и сделаем их такими, чтобы их было легче найти в тексте программы.
Выберите на форме меню Файл и в окне Properties (Свойства) измените его свойство Name на mnuFile. (Свойство Name находится в категории Design (Проектирование) и заключено в круглые скобки).
Обычно программисты начинают имена объектов с трехбуквенной приставки, которая определяет, к какому элементу управления или библиотеке относится данный объект или от какого объекта он является производным. Здесь мы использовали приставку mnu, чтобы указать, что этот объект является элементом меню, а слово File напоминает, что это меню Файл из строки меню. Для идентификации различных типов объектов используются и другие трехбуквенные расширения.
Name на mnuOpenItem.Name на mnuCloseItem.Name на mnuExitItem.Такие имена объектов меню сделают вашу программу более понятной. Другие объекты в проекте (надпись, область показа изображения, другие пункты меню) тоже можно переименовать. Как мы уже писали, это делать необязательно.
В обычном приложении для Windows не все команды меню доступны одновременно. Например, в обычном меню Правка команда Вставить доступна только тогда, когда данные скопированы в буфер обмена. Элемент меню можно отключить, задав для свойства Enabled этого объекта меню значение False. Когда команда отключена, в строке меню она окрашена в серый цвет.
В следующем упражнении мы отключим команду Закрыть в меню Файл. (Команда Закрыть может использоваться только после того, как файл уже был открыт в программе). Далее в этой лекции мы добавим в процедуру обработки события команды Открыть оператор, который в нужный момент включает команду Закрыть.
Enabled объекта mnuCloseItem выберите значение False.Теперь, чтобы продемонстрировать, как работает диалоговое окно выбора цвета, необходимо добавить в меню Дата команду Цвет текста. Диалоговое окно выбора цвета c помощью свойства Color возвращает в программу вновь выбранный цвет. Это свойство будет использоваться для изменения цвета текста в объекте Label1.
Name команды Цвет текста на значение mnuTextColorItem.Чтобы показать в программе диалоговое окно, в процедуре обработки события для соответствующей команды меню нужно ввести оператор, состоящий из имени диалогового окна и метода ShowDialog. Если это необходимо, то перед открытием диалогового окна нужно запрограммировать свойства этого окна. Наконец, в тексте программы должен присутствовать код, который после закрытия окна выполнит те или иные операции в зависимости от выбора или действий, которые пользователь выполнит в этом диалоговом окне.
В следующем упражнении мы добавим в программу код для процедуры обработки события mnuOpenItem_Click, которое выполняется при выборе команды Открыть. Чтобы определить тип файлов, отображаемых в этом общем диалоговом окне (в данном примере - точечные изображения), мы определим свойство Filter объекта OpenFileDialog1. Затем мы используем метод ShowDialog, чтобы открыть на экране диалоговое окно. После того, как пользователь выберет файл и закроет диалоговое окно, файл будет показан в области вывода изображений. Для этого в свойство Image объекта вывода изображений будет записано имя файла, выбранного пользователем. Наконец, мы активируем команду Закрыть, чтобы пользователь мог закрыть картинку.
mnuOpenItem_Click.Между операторами Private Sub и End Sub добавьте следующие ниже операторы. Убедитесь, что вы набрали каждую строку в точности так, как они здесь напечатаны, а после набора последней строки нажмите на клавиатуре стрелку вниз.
OpenFileDialog1.Filter = "Точечный рисунок (*.bmp)|*.bmp" If OpenFileDialog1.ShowDialog() = DialogResult.OK Then PictureBox1.Image = System.Drawing.Image.FromFile(OpenFileDialog1.FileName) mnuCloseItem.Enabled = True End If
Текст программы должен выглядеть так, как показано на этой иллюстрации.

Первые три оператора в этой процедуре обработки события ссылаются на три свойства объекта диалога открытия файла. В первом операторе свойство Filter используется для определения списка допустимых файлов. В нашем случае этот список содержит только один элемент: *.bmp. Это достаточно важно для диалогового окна Открыть, так как объект показа изображения поддерживает шесть типов файлов: точечные изображения (файлы .bmp), метафайлы Windows (файлы .
OpenFileDialog1.Filter = "Точечный рисунок (*.bmp)|*.bmp|Метафайл Windows (*.wmf)|*.wmf"
в диалоговом окне Открыть будут показаны как файлы с точечными изображениями, так и метафайлы Windows.
Второй оператор в процедуре обработки события показывает в программе диалоговое окно Открыть. Метод ShowDialog - это новый метод Visual Basic .NET, он похож на метод Show из Visual Basic 6, но может использоваться для любой формы Windows Forms. Метод ShowDialog возвращает результат с именем DialogResult, который указывает, какую кнопку диалогового окна нажал пользователь. Чтобы определить, щелкнул ли пользователь на кнопке Открыть, используется оператор If...Then, который проверяет, равно ли возвращенное значение DialogResult.OK. Если оно равно этому значению, то в свойстве FileName диалога открытия должен храниться путь к существующему файлу на диске.
В третьем операторе используется имя файла, которое было выбрано в диалоговом окне. Когда пользователь выбирает диск, папку и имя файла, а затем нажимает кнопку Открыть, полный путь передается в программу через свойство OpenFileDialog1.FileName. Затем используется метод System.Drawing.Image.FromFile, который копирует указанное точечное изображение в объект показа изображений. (Этот оператор разбит на две строки при помощи символа продолжения строки, так как он получился очень длинным.)
В четвертом операторе активируется команда Закрыть из меню Файл. Теперь, когда файл в программе был открыт, команда Закрыть должна быть доступна, чтобы пользователи могли закрыть этот файл.
Теперь введите код программы для процедуры обработки события mnuCloseItem_Click, которая выполняется при выборе команды Закрыть из меню Файл.
Между операторами Private Sub и End Sub добавьте следующие операторы программы:
PictureBox1.Image = Nothing mnuCloseItem.Enabled = False
Первый оператор закрывает открытое точечное изображение, удаляя информацию, хранящуюся в свойстве Image. Ключевое слово Nothing используется здесь для того, чтобы отменить связь между текущим объектом точечного изображения и свойством Image, другими словами, Nothing задает для этого свойства нулевое значение, и изображение исчезает. (Далее в этой книге Nothing будет использоваться для сброса значений и других объектов и свойств.) Во втором операторе команду Закрыть из меню Файл отключается, так как открытых файлов больше нет. Использование этого оператора в программе равнозначно настройке свойства Enabled в окне Properties (Свойства).
Теперь нужно ввести код программы для процедуры обработки событий mnuExitItem_Click, которая останавливает программу при выборе команды Выход из меню Файл.
Между операторами Private Sub и End Sub добавьте следующий оператор программы
End
Оператор End останавливает программу, когда пользователь заканчивает с ней работать.
Добавьте в нее следующие операторы
ColorDialog1.ShowDialog() Label1.ForeColor = ColorDialog1.Color
Совет. Диалоговое окно Color (Цвет) может использоваться для установки цвета любого элемента пользовательского интерфейса, который работает с цветом. Например, это может быть фоновый цвет формы, цвета геометрических фигур на форме, основной или фоновые цвет для различных объектов.
В первом операторе используется метод ShowDialog, который открывает диалоговое окно выбора цвета. Метод ShowDialog используется для открытия любой формы как диалогового окна, в том числе и формы, созданные стандартными диалоговыми окнами, которые предоставляет Visual Studio. Во втором операторе цвет, выбранный пользователем в диалоговом окне, присваивается свойству ForeColor объекта Label1. Label1 - это поле надписи, которое используется в форме для показа текущих даты и времени. При работе программы вы будете выбирать в диалоговом окне цвет, и он будет использован для текста в этой надписи.
Диалоговое окно выбора цвета тоже можно настроить. Например, можно управлять тем набором цветов, которые будут предоставлены на выбор пользователя при открытии окна. Эти параметры можно настроить в окне Properties (Свойства) в среде разработки или задать их в тексте программы перед открытием этого диалогового окна, используя метод ShowDialog. Следующая таблица содержит список наиболее часто используемых свойств элемента управления ColorDialog. Чтобы задействовать ту или иную настройку, соответствующему свойству должно быть присвоено значение True, чтобы отменить настройку - значение False.
| Свойство | Значение |
|---|---|
| AllowFullOpen | Если присвоено значение True, в диалоговом окне будет работать кнопка Define |
| AnyColor | Если присвоено значение True, пользователь сможет выбрать любой цвет из показанных в диалоговом окне. |
| FullOpen | Если присвоено значение True, при открытии диалогового окна будет видна область |
| ShowHelp | Присвойте True, если нужно включить в диалоговом окне кнопку Help (Справка). |
| SolidColorOnly | Если присвоено значение True, пользователь сможет выбрать только "чистые" цвета (цвета со смешением будут отключены). |
Теперь давайте запустим программу Menu и поэкспериментируем с созданными нами меню и диалоговыми окнами.
В меню Файл запущенной программы выберите Открыть. Появится диалоговое окно Открыть. Обратите внимание на текст Точечный рисунок (*.bmp) в поле Тип файлов. Это поле мы определили с помощью оператора
OpenFileDialog1.Filter = "Точечный рисунок (*.bmp)|*.bmp"
в процедуре события mnuOpenItem_Click. Первая часть текста в кавычках - Точечный рисунок (*.bmp) - указывает, какие элементы будут перечислены в поле Тип файлов. Вторая часть - *.bmp - определяет расширение имен файлов, которые будут перечислены в самом диалоговом окне.
Откройте папку c:\windows (или c:\winnt ) и прокрутите список, пока в нем не появятся файлы с изображениями. Вы увидите стандартную коллекцию точечных изображений. Большинство этих файлов включено в состав Windows, но можно добавлять в эту коллекцию и свои собственные картинки.

Выберите один из файлов FeatherTexture.bmp, а затем нажмите кнопку Открыть. Изображение из этого файла появится в поле показа изображений. Форма будет выглядеть примерно так.

В меню Дата выберите команду Цвет текста. Появится диалоговое окно Color (Цвет), показанное ниже.

Диалоговое окно Color (Цвет) содержит элементы, которые позволяют изменить цвет надписи в программе. По умолчанию в этом окне выбран текущий цвет - черный.
Щелкните на синем поле, а затем на кнопке OK.
Диалоговое окно Color (Цвет) закроется, а цвет текста в надписи изменится на синий.

В меню Дата щелкните на команде День.
Оно будет показано синим цветом. Теперь, когда цвет текста в этой надписи задан, он останется неизменным до тех пор, пока вы его снова не измените или не закроете программу.
Откройте меню Файл.
Обратите внимание, что команда Закрыть включена. (Мы включили ее в процедуре события mnuOpenItem_Click с помощью оператора mnuCloseItem.Enabled = True.)
Нажмите З (клавишу доступа для Закрыть, при необходимости переключите клавиатуру в русский регистр), чтобы закрыть изображение.
Файл закроется, и точечное изображение Windows исчезнет (это сработало ключевое слово Nothing.)
Откройте меню Файл. Теперь команда Закрыть отключена, так как в области вывода изображений картинки нет.
Вы познакомились с важными командами и методиками, предназначенными для создания меню и вызова диалоговых окон. После того, как вы больше узнаете о коде программы, вы сможете использовать эти навыки в работе над вашими собственными программами.
С помощью элемента управления MainMenu можно назначать создаваемым меню сочетания клавиш. Сочетания клавиш - это комбинация клавиш на клавиатуре, нажав которую пользователь может вызвать команду меню не открывая его. Например, в обычном меню Edit (Правка) в приложении Windows (например, в Microsoft Word) можно выделить текст и скопировать его в буфер обмена, нажав клавиши (Ctrl)+(C). Эти сочетания настраиваются в свойстве Shortcut элемента управления MainMenu. Давайте назначим два сочетания клавиш для меню Дата в программе Menu.
В меню Дата выберите команду Время.
Прежде чем можно будет задать для команды меню сочетание клавиш, ее необходимо выделить. Сочетание клавиш определяется в свойстве Shortcut выбранной команды, в окне Properties (Свойства) . Для объекта главного меню автоматически предлагается много вариантов клавиш. Давайте назначим для команды Время сочетание (Ctrl)+(T).
Откройте окно Properties (Свойства), выберите свойство Shortcut, затем нажмите стрелку раскрывающегося списка во столбце справа, прокрутите этот список и выберите CtrlT. Окно Properties (Свойства) будет выглядеть так, как показано на рисунке справа.
Совет. Обычно Visual Basic при выполнении программы показывает в меню сочетания клавиш, чтобы подсказать пользователям, какие клавиши следует нажимать. Чтобы скрыть от пользователя эти комбинации клавиш (например, если для них не хватает места), задайте для свойства ShowShortcut значение False. Сочетания клавиш по-прежнему будут работать, но подсказок в меню пользователи не увидят.

Shortcut на значение CtrlD. Теперь давайте запустим программу и попробуем использовать сочетания клавиш.Нажмите (Ctrl)+(D), чтобы выполнить команду День. В программе появится текущая дата.

Shortcut.| Чтобы | Сделайте следующее |
|---|---|
| Создать элемент меню | Щелкните на элементе управления MainMenu и нарисуйте меню в вашей форме. Щелкните на тэге Type Here (Прототип для текста) в вашей форме и введите название меню. |
| Добавить к элементу меню клавишу доступа | Дважды щелкните на элементе меню, чтобы отобразить курсор редактирования текста, а затем введите амперсанд () перед той буквой, которую вы хотите использовать для клавиши доступа. |
| Назначить элементу меню быструю клавишу | С помощью окна Properties (Свойства) установите свойство Shortcut элемента меню. Для этого предоставляется готовый список часто используемых быстрых клавиш. |
| Изменить порядок элементов меню | Перетащите элемент меню, который вы хотите переместить на другое место. |
| Использовать в программе стандартное диалоговое окно | Добавьте в вашу форму один из семи элементов управления стандартных диалоговых окон, а затем настройте его с помощью установки его свойств в коде программы. |
| Отобразить диалоговое окно открытия файла | Добавьте в вашу форму элемент управления OpenFileDialog. Отобразите это диалоговое окно с помощью метода ShowDialog. Свойство FileName содержит имя выбранного файла. |
| Отобразить диалоговое окно выбора цвета | Добавьте в вашу форму элемент управления ColorDialog. Отобразите это диалоговое окно с помощью метода ShowDialog. Свойство Color содержит цвет, выбранный пользователем. |
| Отключить меню | С помощью окна Properties (Свойства) установите свойство Enabled элемента меню на значение False. |
| Включить команду меню с помощью кода программы | Используйте оператор программы mnuCloseItem.Enabled = True, но замените mnuCloseItem на имя вашей команды меню. |
| Очистить изображение в области вывода изображений | Используйте оператор программы PictureBox1.Image = Nothing |
В этой лекции вы узнаете, как:
В лекции 3 элементы управления Microsoft Visual Studio использовались для получения ввода от пользователя, работающего с программой. В этой лекции вы узнаете, как предоставить пользователям разные варианты, используя для этого профессионально выглядящие меню и диалоговые окна. Меню расположено в строке меню и представляет собой список команд, объединенных в логические группы. Когда пользователь нажимает на названии группы, то в раскрывающемся списке появляются команды этого меню. Большинство команд меню исполняется немедленно после нажатия; например, если пользователь выбирает в меню Edit (Правка) команду Copy (Копировать), то информация немедленно копируется в буфер обмена. Однако если команда меню оканчивается многоточием (...),Visual Basic выводит диалоговое окно, запрашивающее перед исполнением команды дополнительную информацию. В этой лекции вы узнаете, как применять элемент управления MainMenu для добавления в вашу программу стандартных меню и как применять два элемента управления диалоговых окон.
ShowDialog и свойство DialogResult, что упрощает создание собственных форм, которые работают как стандартные диалоговые окна.Элемент управления MainMenu - это инструмент, с помощью которого в программу можно добавить меню и настроить их в окне Properties (Свойства). С помощью MainMenu можно добавлять новые меню, изменять и удалять существующие. В меню можно добавить специальные возможности: клавиши ускоренного доступа, отметки "включено/выключено" и сочетания клавиш. После того, как меню добавлено в форму, для обработки команд меню использовать процедуры обработки событий. В следующем упражнении с помощью элемента управления MainMenu мы создадим меню Clock, команды которого показывает текущую дату и время.
Выберите элемент управления MainMenu на закладке Windows Forms окна области элементов и нарисуйте на поле формы элемент управления.
Не беспокойтесь по поводу его расположения - Visual Studio автоматически передвинет этот элемент управления в нужное место и задаст его размер. Форма будет выглядеть примерно так.

Объект главного меню появляется не на поле формы, а под ней. В предыдущих версиях Visual Basic все объекты показывались на самой форме. Но в Visual Studio .NET невидимые объекты, в том числе меню и таймеры, показываются в среде разработки на отдельной панели, которая называется областью компонентов. На этой панели их можно выделять, настраивать их свойства или удалять.
В дополнение к объекту меню, расположенному в области компонентов, создаваемое в Visual Studio .NET меню графически изображается в верхней части формы. Чтобы ввести название меню, нужно щелкнуть по полю Type Here (Прототип для текста). После этого можно добавлять заголовки подменю и других меню, выбирая нужные поля с помощью стрелок и вписывая туда требуемые названия. Позже вы всегда сможете вернуться к этому встроенному Menu Designer (Конструктору меню) и отредактировать то, что уже сделано, или добавить новые пункты. Объект главного меню очень хорошо настраивается и позволяет создать решения с использованием меню, не уступающие лучшим Windows-приложениям.
Щелкните на тэге Type Here (Прототип для текста), введите Дата, а затем нажмите клавишу (Enter). Слово "Дата" стало названием первого меню, и появились два новых поля Type Here (Прототип для текста), позволяющие создать элементы подменю или команды в меню Дата и дополнительные меню. В данный момент выберите подменю.
Совет. Если меню с формы исчезает, выберите объект MainMenu1 в области компонентов, и оно снова появится.
Наберите слово Время, а затем нажмите клавишу (Enter). Теперь у вас есть меню Дата с двумя командами меню - День и Время. Если необходимо, можно вводить дополнительные меню и команды, но для данного примера этого достаточно. Форма будет выглядеть примерно так.

В большинстве приложений команды меню можно вызывать с помощью клавиатуры. Например, чтобы в Visual Studio открыть меню File (Файл), нужно нажать клавишу (Alt) а затем (Ф). Когда меню File (Файл) откроется, то, чтобы выполнить команду Print (Печать), достаточно нажать на клавиатуре (П). Клавиши, которые вы нажимаете вместе с (Alt) или в открытом меню, называются клавишами доступа (или клавишами быстрого доступа ). В конкретном элементе меню клавишу доступа можно определить по подчеркнутому символу.
Чтобы добавить в главное меню клавишу доступа, активизируйте Menu Designer (Конструктор меню) и введите перед требуемой буквой в имени меню символ "амперсанд" (). Во время выполнения программы соответствующая клавиша на клавиатуре будет работать как клавиша быстрого доступ к меню.
Совет. По умолчанию Windows 2000 не подчеркивает в программе клавиши доступа до тех пор, пока пользователь не нажмет в первый раз клавишу (Alt). Это поведение можно отключить на закладке Effects (Эффекты) в свойствах Display (Экран).
Сейчас мы добавим клавиши доступа для меню Дата.
По соглашению, в приложениях для Microsoft Windows каждое название и команды меню начинаются с заглавной буквы. Часто первыми двумя командами меню в строке меню являются Файл (File) и Правка (Edit), а последним является Справка (Help). Часто встречаются названия команд View (Вид), Формат (Format) и Окно (Window). Не имеет значения, какие меню и команды вы используете в приложении - главное, чтобы они были понятны и соответствовали своим названиям. Меню и команды должны быть просты в использовании и иметь как можно больше общего с другими приложениями для Windows. При создании элементов меню придерживайтесь следующих рекомендаций.
Checked должно иметь значение True.Нажмите клавишу (Enter). Нажатие на (Enter) фиксирует изменения в тексте. Ваша форма будет выглядеть примерно так.

Теперь с помощью Конструктора меню давайте изменим порядок команд День и Время. Изменение порядка элементов меню - это важный навык, так как это требуется довольно часто.
Мы закончили создавать пользовательский интерфейс для меню Дата. Теперь нужно запрограммировать процедуры, соответствующие строкам меню, для обработки выбора пользователя.
Совет. Чтобы удалить из меню ненужный элемент, щелкните на этом элементе, а затем нажмите клавишу (Delete).
После того, как меню и команды настроены с помощью объекта MainMenu, они также становятся объектами программы. Чтобы заставить объекты меню выполнять осмысленную работу, необходимо написать для них процедуры обработки событий. Процедуры обработки событий меню обычно содержат операторы, которые показывают информацию в пользовательском интерфейсе, обрабатывают ввод или изменяют одно или несколько свойств меню. Если для обработки команды требуется получить дополнительную информацию, то процедура обработки события обычно открывает диалоговое окно. Для этого используется один из элементов управления диалоговых окон Windows Forms или один из элементов управления для ввода, с которыми мы работали в лекции 3.
В следующем упражнении мы добавим к форме объект надпись, показывающую результат работы команд Время и День из меню Дата.
Label.Label, и в коде программы у него будет имя Label1.Задайте для этой надписи следующие свойства:
| Объект | Свойство | Значение |
|---|---|---|
| Label1 | BorderStyle | FixedSingle |
| Font | Microsoft Sans Serif, жирный , 14 пунктов | |
| Text | (empty) | |
| TextAlign | MiddleCenter |
Ваша форма должна выглядеть примерно так.

Теперь добавим операторы в процедуры обработки событий для обработки команд меню Время и День.
MenuItem3_Click. Имя MenuItem3_Click означает, что пункт Время был третьим из созданных в этом проекте (вслед за Дата и День ), а слово _Click напоминает, что это процедура события, которая запускается при щелчке на этом элементе меню. Пока мы сохраним это название меню, хотя тут следует отметить, что оно недостаточно интуитивно понятно. С помощью свойства Name можно задавать для объектов свои собственные имена, которые описывают их назначение в программе более точно. В предыдущих упражнениях мы на это не отвлекались, но далее в этой лекции мы определим имена меню, которые будут понятнее и будут иметь более профессиональный вид.Добавьте в программу следующий оператор
Label1.Text = TimeString
Этот оператор присваивает текущее время (по системным часам) свойству Text объекта Label1, которое, собственно, и показывается в виде надписи. Предыдущий текст в объекте Label1, если он имелся, будет заменен. TimeString - это свойство, в котором содержится текущее время, отформатированное для показа на экране или для печати. В программах с помощью свойства TimeString всегда а можно показать время с точностью до секунд. ( TimeString заменил оператор QuickBasic TIME$.)
Совет. Свойство TimeString в Visual Basic возвращает текущее системное время. Системное время можно установить из Панели управления Windows с помощью процедуры Дата и время. Формат системного времени можно изменить там же в Региональных настройках.
MenuItem2_Click. Эта процедура исполняется тогда, когда пользователь щелкает в меню Дата на команде День.Добавьте в программу следующий оператор
Label1.Text = DateString
Этот оператор присваивает сегодняшнее число (по системным часам) свойству Text объекта Label1, которое показывается в виде надписи. Предыдущий текст в объекте Label1, если он имелся, будет заменен. Свойство DateString точно так же доступно для широкого использования в программах. Если в форме требуется показать текущую дату, присвойте свойству Text значение DateString.
Совет. Свойство DateString в Visual Basic возвращает текущую системную дату. Ее можно установить в разделе Дата и время Панели управления; формат системного времени можно изменить там же в Региональных настройках.
Чтобы закончить ввод строки, нажмите клавишу со стрелкой вниз. Ваш экран должен выглядеть примерно так.

Мы закончили создавать программу, в которой используется меню. Теперь нужно сохранить изменения в проекте и запустить его.
Примечание. Полную версию программы можно найти по адресу c:\ vbnet03sbs\Гл.4\menu.
Выберите команду Время. В поле надписи появится текущее системное время, как показано ниже.

Теперь посмотрим, какое сегодня число.
Поздравляем! Вы создали работающую программу, в которой используются меню и клавиши доступа. В следующем упражнении вы узнаете, как использовать меню для показа стандартных диалоговых окон.
Чтобы получить от системных часов информацию о времени, можно использовать их различные свойства и функции. Информация о времени может потребоваться в программах при создании собственных календарей, часов или оповещений. В следующей таблице содержится перечень наиболее полезных функций системных часов. За дополнительной информацией обращайтесь к справочной системе Visual Studio.
| Свойство или функция | Описание |
|---|---|
TimeString |
Возвращает от системных часов текущее время. |
DateString |
Возвращает от системных часов текущую дату. |
Now |
Возвращает закодированное значение, содержащее текущие дату и время. Наиболее полезно как аргумент для других функций системных часов. |
Hour (time) |
Возвращает количество часов для указанного времени (от 0 до 24). |
Minute (time) |
Возвращает количество минут для указанного времени (от 0 до 59). |
Second (time) |
Возвращает количество секунд для указанного времени (от 0 до 59). |
Day (date) |
Возвращает целое число, представляющее собой день месяца (от 1 до 31). |
Month (date) |
Возвращает целое число, представляющее собой месяц (от 1 до 12). |
Year (date) |
Возвращает год для указанной даты. |
Weekday (date) |
Возвращает целое число, представляющее собой день недели (по американской системе: 1 - это воскресенье, 2 - это понедельник, и т.д.). |
В Visual Studio на закладке Windows Forms окна области элементов имеется семь стандартных элементов управления для диалоговых окон. Они предоставляются в готовом виде, так что вам вряд ли потребуется создавать собственные диалоговые окна для типичных задач, таких как открытие файлов, сохранение файлов или печать. Во многих случаях нужно написать код, который подключает эти диалоговые окна к программе, но пользовательский интерфейс уже сделан, и он соответствует стандартам для общих задач в приложениях Windows. Все семь имеющихся элементов управления для стандартных диалоговых окон перечислены в следующей таблице. Они во многом соответствуют объектам, которые в Visual Basic 6 предоставлялись в составе элемента управления CommonDialog, но имеют и некоторые отличия. Так, вы не найдете в таблице элемент управления PrintPreviewControl, но в случае необходимости его заменит элемент управления PrintPreviewDialog.
| Название элемента управления | Назначение |
|---|---|
OpenFileDialog |
Получает названия диска, папки и файла для существующего файла. |
SaveFile (Файл) Dialog |
Получает названия диска, папки и файла для нового файла. |
FontDialog |
Позволяет выбрать новый шрифт и его стиль. |
ColorDialog |
Позволяет выбрать цвет из палитры. |
PrintDialog |
Позволяет задать параметры печати. |
PrintPreviewDialog |
Отображает диалоговое окно предварительного просмотра материала для печати, так, как это делает Microsoft Word. |
PageSetupDialog |
Позволяет управлять параметрами страницы: полями, размером бумаги и ее ориентацией. |
В следующих упражнениях мы добавим в программу Menu новые меню и попрактикуемся в использовании элементов управления OpenFileDialog и ColorDialog. Вы можете использовать либо свой существующий проект Menu, либо, если вы его не создавали, загрузить проект Menu из папки с файлами практических занятий. (Окончательная версия программы переименована в Dialog, чтобы сохранить на диске оба проекта.)
Если вы не создавали проект Menu, в меню File (Файл) выберите Open (Открыть), затем Project (Проект), в папке c:\vbnet03sbs\Гл.4\menu выберите файл проекта Menu.vbproj, а затем нажмите кнопку Open (Открыть). Если форма не видна, дважды щелкните мышью в Solution Explorer (Обозревателе решений) на Form1.vb.
Добавьте в область компонентов, в которой уже находится объект главного меню MainMenu1, два элемента управления диалоговых окон. Элемент управления OpenFileDialog потребуется, чтобы открывать файлы с точечными изображениями, а элемент управления ColorDialog позволит изменять цвет для показа даты. В процессе разработки элементы управления диалоговых окон помещаются в области компонентов, а не на поле формы, так как во время выполнения они на форме не появляются.
В области элементов на закладке Windows Forms выберите элемент управления OpenFileDialog, а затем щелкните мышкой в области компонентов, где уже есть объект MainMenu1.
Совет. Если вы не видите OpenFileDialog в области элементов, то он может быть за пределами видимости. Чтобы промотать список в области элементов, щелкните на нижней стрелке прокрутки, находящейся рядом с закладкой
В области компонентов появится объект диалогового окна для открытия файла.
В области элементов на закладке Windows Forms выберите элемент управления ColorDialog, а затем щелкните на области компонентов, расположенной ниже поля формы. Теперь область компонентов выглядит так.

Как и объект главного меню, объекты с диалогами открытия файла и выбора цвета можно настроить, задав их свойства.
Теперь с помощью элемента управления PictureBox создайте область для показа изображений. Этот объект показывает в поле формы содержимое из файлов изображений. На этот раз мы выведем на поле формы картинку, используя диалоговое окно для открытия файла.
PictureBox.SizeMode этого объекта выберите значение StretchImage.Теперь с помощью Menu Designer (Конструктора меню) добавьте в вашу программу меню File (Файл).
Чтобы передвинуть меню Файл на первое место, просто перетащите его на меню Дата. В Menu Designer (Конструкторе меню) целые меню можно перемещать точно так же, как и отдельные команды внутри меню. Имеет смысл сделать меню Файл первым меню программы. Ваша форма должна выглядеть примерно так.

Как уже упоминалось в этой лекции, имена объектов формы, в том числе и команд меню, можно изменить, изменив для каждого из них свойство Name. Свойство Name не изменяет внешнего вида объекта во время выполнения программы, то, что объект показывает пользователю, зато оно используется для обращения к объектам в тексте программы.
Важное замечание. Имя любого объекта (его свойство Name) в программе на Visual Basic должно состоять из латинских букв или цифр. Замена имени на русское или использование букв русского алфавита недопустимо, так как может вызвать ошибки в программе.
Давайте изменим имена объектов из меню Файл и сделаем их такими, чтобы их было легче найти в тексте программы.
Выберите на форме меню Файл и в окне Properties (Свойства) измените его свойство Name на mnuFile. (Свойство Name находится в категории Design (Проектирование) и заключено в круглые скобки).
Обычно программисты начинают имена объектов с трехбуквенной приставки, которая определяет, к какому элементу управления или библиотеке относится данный объект или от какого объекта он является производным. Здесь мы использовали приставку mnu, чтобы указать, что этот объект является элементом меню, а слово File напоминает, что это меню Файл из строки меню. Для идентификации различных типов объектов используются и другие трехбуквенные расширения.
Name на mnuOpenItem.Name на mnuCloseItem.Name на mnuExitItem.Такие имена объектов меню сделают вашу программу более понятной. Другие объекты в проекте (надпись, область показа изображения, другие пункты меню) тоже можно переименовать. Как мы уже писали, это делать необязательно.
В обычном приложении для Windows не все команды меню доступны одновременно. Например, в обычном меню Правка команда Вставить доступна только тогда, когда данные скопированы в буфер обмена. Элемент меню можно отключить, задав для свойства Enabled этого объекта меню значение False. Когда команда отключена, в строке меню она окрашена в серый цвет.
В следующем упражнении мы отключим команду Закрыть в меню Файл. (Команда Закрыть может использоваться только после того, как файл уже был открыт в программе). Далее в этой лекции мы добавим в процедуру обработки события команды Открыть оператор, который в нужный момент включает команду Закрыть.
Enabled объекта mnuCloseItem выберите значение False.Теперь, чтобы продемонстрировать, как работает диалоговое окно выбора цвета, необходимо добавить в меню Дата команду Цвет текста. Диалоговое окно выбора цвета c помощью свойства Color возвращает в программу вновь выбранный цвет. Это свойство будет использоваться для изменения цвета текста в объекте Label1.
Name команды Цвет текста на значение mnuTextColorItem.Чтобы показать в программе диалоговое окно, в процедуре обработки события для соответствующей команды меню нужно ввести оператор, состоящий из имени диалогового окна и метода ShowDialog. Если это необходимо, то перед открытием диалогового окна нужно запрограммировать свойства этого окна. Наконец, в тексте программы должен присутствовать код, который после закрытия окна выполнит те или иные операции в зависимости от выбора или действий, которые пользователь выполнит в этом диалоговом окне.
В следующем упражнении мы добавим в программу код для процедуры обработки события mnuOpenItem_Click, которое выполняется при выборе команды Открыть. Чтобы определить тип файлов, отображаемых в этом общем диалоговом окне (в данном примере - точечные изображения), мы определим свойство Filter объекта OpenFileDialog1. Затем мы используем метод ShowDialog, чтобы открыть на экране диалоговое окно. После того, как пользователь выберет файл и закроет диалоговое окно, файл будет показан в области вывода изображений. Для этого в свойство Image объекта вывода изображений будет записано имя файла, выбранного пользователем. Наконец, мы активируем команду Закрыть, чтобы пользователь мог закрыть картинку.
mnuOpenItem_Click.Между операторами Private Sub и End Sub добавьте следующие ниже операторы. Убедитесь, что вы набрали каждую строку в точности так, как они здесь напечатаны, а после набора последней строки нажмите на клавиатуре стрелку вниз.
OpenFileDialog1.Filter = "Точечный рисунок (*.bmp)|*.bmp" If OpenFileDialog1.ShowDialog() = DialogResult.OK Then PictureBox1.Image = System.Drawing.Image.FromFile(OpenFileDialog1.FileName) mnuCloseItem.Enabled = True End If
Текст программы должен выглядеть так, как показано на этой иллюстрации.

Первые три оператора в этой процедуре обработки события ссылаются на три свойства объекта диалога открытия файла. В первом операторе свойство Filter используется для определения списка допустимых файлов. В нашем случае этот список содержит только один элемент: *.bmp. Это достаточно важно для диалогового окна Открыть, так как объект показа изображения поддерживает шесть типов файлов: точечные изображения (файлы .bmp), метафайлы Windows (файлы .
OpenFileDialog1.Filter = "Точечный рисунок (*.bmp)|*.bmp|Метафайл Windows (*.wmf)|*.wmf"
в диалоговом окне Открыть будут показаны как файлы с точечными изображениями, так и метафайлы Windows.
Второй оператор в процедуре обработки события показывает в программе диалоговое окно Открыть. Метод ShowDialog - это новый метод Visual Basic .NET, он похож на метод Show из Visual Basic 6, но может использоваться для любой формы Windows Forms. Метод ShowDialog возвращает результат с именем DialogResult, который указывает, какую кнопку диалогового окна нажал пользователь. Чтобы определить, щелкнул ли пользователь на кнопке Открыть, используется оператор If...Then, который проверяет, равно ли возвращенное значение DialogResult.OK. Если оно равно этому значению, то в свойстве FileName диалога открытия должен храниться путь к существующему файлу на диске.
В третьем операторе используется имя файла, которое было выбрано в диалоговом окне. Когда пользователь выбирает диск, папку и имя файла, а затем нажимает кнопку Открыть, полный путь передается в программу через свойство OpenFileDialog1.FileName. Затем используется метод System.Drawing.Image.FromFile, который копирует указанное точечное изображение в объект показа изображений. (Этот оператор разбит на две строки при помощи символа продолжения строки, так как он получился очень длинным.)
В четвертом операторе активируется команда Закрыть из меню Файл. Теперь, когда файл в программе был открыт, команда Закрыть должна быть доступна, чтобы пользователи могли закрыть этот файл.
Теперь введите код программы для процедуры обработки события mnuCloseItem_Click, которая выполняется при выборе команды Закрыть из меню Файл.
Между операторами Private Sub и End Sub добавьте следующие операторы программы:
PictureBox1.Image = Nothing mnuCloseItem.Enabled = False
Первый оператор закрывает открытое точечное изображение, удаляя информацию, хранящуюся в свойстве Image. Ключевое слово Nothing используется здесь для того, чтобы отменить связь между текущим объектом точечного изображения и свойством Image, другими словами, Nothing задает для этого свойства нулевое значение, и изображение исчезает. (Далее в этой книге Nothing будет использоваться для сброса значений и других объектов и свойств.) Во втором операторе команду Закрыть из меню Файл отключается, так как открытых файлов больше нет. Использование этого оператора в программе равнозначно настройке свойства Enabled в окне Properties (Свойства).
Теперь нужно ввести код программы для процедуры обработки событий mnuExitItem_Click, которая останавливает программу при выборе команды Выход из меню Файл.
Между операторами Private Sub и End Sub добавьте следующий оператор программы
End
Оператор End останавливает программу, когда пользователь заканчивает с ней работать.
Добавьте в нее следующие операторы
ColorDialog1.ShowDialog() Label1.ForeColor = ColorDialog1.Color
Совет. Диалоговое окно Color (Цвет) может использоваться для установки цвета любого элемента пользовательского интерфейса, который работает с цветом. Например, это может быть фоновый цвет формы, цвета геометрических фигур на форме, основной или фоновые цвет для различных объектов.
В первом операторе используется метод ShowDialog, который открывает диалоговое окно выбора цвета. Метод ShowDialog используется для открытия любой формы как диалогового окна, в том числе и формы, созданные стандартными диалоговыми окнами, которые предоставляет Visual Studio. Во втором операторе цвет, выбранный пользователем в диалоговом окне, присваивается свойству ForeColor объекта Label1. Label1 - это поле надписи, которое используется в форме для показа текущих даты и времени. При работе программы вы будете выбирать в диалоговом окне цвет, и он будет использован для текста в этой надписи.
Диалоговое окно выбора цвета тоже можно настроить. Например, можно управлять тем набором цветов, которые будут предоставлены на выбор пользователя при открытии окна. Эти параметры можно настроить в окне Properties (Свойства) в среде разработки или задать их в тексте программы перед открытием этого диалогового окна, используя метод ShowDialog. Следующая таблица содержит список наиболее часто используемых свойств элемента управления ColorDialog. Чтобы задействовать ту или иную настройку, соответствующему свойству должно быть присвоено значение True, чтобы отменить настройку - значение False.
| Свойство | Значение |
|---|---|
| AllowFullOpen | Если присвоено значение True, в диалоговом окне будет работать кнопка Define |
| AnyColor | Если присвоено значение True, пользователь сможет выбрать любой цвет из показанных в диалоговом окне. |
| FullOpen | Если присвоено значение True, при открытии диалогового окна будет видна область |
| ShowHelp | Присвойте True, если нужно включить в диалоговом окне кнопку Help (Справка). |
| SolidColorOnly | Если присвоено значение True, пользователь сможет выбрать только "чистые" цвета (цвета со смешением будут отключены). |
Теперь давайте запустим программу Menu и поэкспериментируем с созданными нами меню и диалоговыми окнами.
В меню Файл запущенной программы выберите Открыть. Появится диалоговое окно Открыть. Обратите внимание на текст Точечный рисунок (*.bmp) в поле Тип файлов. Это поле мы определили с помощью оператора
OpenFileDialog1.Filter = "Точечный рисунок (*.bmp)|*.bmp"
в процедуре события mnuOpenItem_Click. Первая часть текста в кавычках - Точечный рисунок (*.bmp) - указывает, какие элементы будут перечислены в поле Тип файлов. Вторая часть - *.bmp - определяет расширение имен файлов, которые будут перечислены в самом диалоговом окне.
Откройте папку c:\windows (или c:\winnt ) и прокрутите список, пока в нем не появятся файлы с изображениями. Вы увидите стандартную коллекцию точечных изображений. Большинство этих файлов включено в состав Windows, но можно добавлять в эту коллекцию и свои собственные картинки.

Выберите один из файлов FeatherTexture.bmp, а затем нажмите кнопку Открыть. Изображение из этого файла появится в поле показа изображений. Форма будет выглядеть примерно так.

В меню Дата выберите команду Цвет текста. Появится диалоговое окно Color (Цвет), показанное ниже.

Диалоговое окно Color (Цвет) содержит элементы, которые позволяют изменить цвет надписи в программе. По умолчанию в этом окне выбран текущий цвет - черный.
Щелкните на синем поле, а затем на кнопке OK.
Диалоговое окно Color (Цвет) закроется, а цвет текста в надписи изменится на синий.

В меню Дата щелкните на команде День.
Оно будет показано синим цветом. Теперь, когда цвет текста в этой надписи задан, он останется неизменным до тех пор, пока вы его снова не измените или не закроете программу.
Откройте меню Файл.
Обратите внимание, что команда Закрыть включена. (Мы включили ее в процедуре события mnuOpenItem_Click с помощью оператора mnuCloseItem.Enabled = True.)
Нажмите З (клавишу доступа для Закрыть, при необходимости переключите клавиатуру в русский регистр), чтобы закрыть изображение.
Файл закроется, и точечное изображение Windows исчезнет (это сработало ключевое слово Nothing.)
Откройте меню Файл. Теперь команда Закрыть отключена, так как в области вывода изображений картинки нет.
Вы познакомились с важными командами и методиками, предназначенными для создания меню и вызова диалоговых окон. После того, как вы больше узнаете о коде программы, вы сможете использовать эти навыки в работе над вашими собственными программами.
С помощью элемента управления MainMenu можно назначать создаваемым меню сочетания клавиш. Сочетания клавиш - это комбинация клавиш на клавиатуре, нажав которую пользователь может вызвать команду меню не открывая его. Например, в обычном меню Edit (Правка) в приложении Windows (например, в Microsoft Word) можно выделить текст и скопировать его в буфер обмена, нажав клавиши (Ctrl)+(C). Эти сочетания настраиваются в свойстве Shortcut элемента управления MainMenu. Давайте назначим два сочетания клавиш для меню Дата в программе Menu.
В меню Дата выберите команду Время.
Прежде чем можно будет задать для команды меню сочетание клавиш, ее необходимо выделить. Сочетание клавиш определяется в свойстве Shortcut выбранной команды, в окне Properties (Свойства) . Для объекта главного меню автоматически предлагается много вариантов клавиш. Давайте назначим для команды Время сочетание (Ctrl)+(T).
Откройте окно Properties (Свойства), выберите свойство Shortcut, затем нажмите стрелку раскрывающегося списка во столбце справа, прокрутите этот список и выберите CtrlT. Окно Properties (Свойства) будет выглядеть так, как показано на рисунке справа.
Совет. Обычно Visual Basic при выполнении программы показывает в меню сочетания клавиш, чтобы подсказать пользователям, какие клавиши следует нажимать. Чтобы скрыть от пользователя эти комбинации клавиш (например, если для них не хватает места), задайте для свойства ShowShortcut значение False. Сочетания клавиш по-прежнему будут работать, но подсказок в меню пользователи не увидят.

Shortcut на значение CtrlD. Теперь давайте запустим программу и попробуем использовать сочетания клавиш.Нажмите (Ctrl)+(D), чтобы выполнить команду День. В программе появится текущая дата.

Shortcut.| Чтобы | Сделайте следующее |
|---|---|
| Создать элемент меню | Щелкните на элементе управления MainMenu и нарисуйте меню в вашей форме. Щелкните на тэге Type Here (Прототип для текста) в вашей форме и введите название меню. |
| Добавить к элементу меню клавишу доступа | Дважды щелкните на элементе меню, чтобы отобразить курсор редактирования текста, а затем введите амперсанд () перед той буквой, которую вы хотите использовать для клавиши доступа. |
| Назначить элементу меню быструю клавишу | С помощью окна Properties (Свойства) установите свойство Shortcut элемента меню. Для этого предоставляется готовый список часто используемых быстрых клавиш. |
| Изменить порядок элементов меню | Перетащите элемент меню, который вы хотите переместить на другое место. |
| Использовать в программе стандартное диалоговое окно | Добавьте в вашу форму один из семи элементов управления стандартных диалоговых окон, а затем настройте его с помощью установки его свойств в коде программы. |
| Отобразить диалоговое окно открытия файла | Добавьте в вашу форму элемент управления OpenFileDialog. Отобразите это диалоговое окно с помощью метода ShowDialog. Свойство FileName содержит имя выбранного файла. |
| Отобразить диалоговое окно выбора цвета | Добавьте в вашу форму элемент управления ColorDialog. Отобразите это диалоговое окно с помощью метода ShowDialog. Свойство Color содержит цвет, выбранный пользователем. |
| Отключить меню | С помощью окна Properties (Свойства) установите свойство Enabled элемента меню на значение False. |
| Включить команду меню с помощью кода программы | Используйте оператор программы mnuCloseItem.Enabled = True, но замените mnuCloseItem на имя вашей команды меню. |
| Очистить изображение в области вывода изображений | Используйте оператор программы PictureBox1.Image = Nothing |
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.