Visual Basic .NET на уроках информатики

Работа с меню и диалоговыми окнами

Разбить на страницы
Показывать лекцию целиком

В этой лекции вы узнаете, как:

  • создать меню с помощью элемента управления MainMenu;
  • обработать выбор пункта меню в коде программы;
  • использовать элементы управления OpenFile, FileDialog и ColorDialog в специальных диалоговых окнах.
  • В лекции 3 элементы управления Microsoft Visual Studio использовались для получения ввода от пользователя, работающего с программой. В этой лекции вы узнаете, как предоставить пользователям разные варианты, используя для этого профессионально выглядящие меню и диалоговые окна. Меню расположено в строке меню и представляет собой список команд, объединенных в логические группы. Когда пользователь нажимает на названии группы, то в раскрывающемся списке появляются команды этого меню. Большинство команд меню исполняется немедленно после нажатия; например, если пользователь выбирает в меню Edit (Правка) команду Copy (Копировать), то информация немедленно копируется в буфер обмена. Однако если команда меню оканчивается многоточием (...),Visual Basic выводит диалоговое окно, запрашивающее перед исполнением команды дополнительную информацию. В этой лекции вы узнаете, как применять элемент управления MainMenu для добавления в вашу программу стандартных меню и как применять два элемента управления диалоговых окон.

    Что нового в Visual Basic .NET?

  • Для создания меню больше не используется инструмент Menu Editor (Редактор меню), имевшийся в Visual Basic 6. Вместо этого с помощью элемента управления MainMenu в поле формы создается объект главного меню, а затем его свойства задаются в Menu Designer (Конструкторе меню). Однако выбор пунктов меню пользователем по-прежнему обрабатывается в коде программы.
  • При создании стандартных диалоговых окон больше не используется элемент управления CommonDialog. Вместо этого стандартные диалоговые окна добавляются в проект с помощью одного из семи элементов управления Windows Forms. Эти элементы управления называются OpenFileDialog, SaveFileDialog, FontDialog, ColorDialog, PrintDialog, PrintPreviewDialog и PageSetupDialog.
  • В составе форм теперь имеются метод ShowDialog и свойство DialogResult, что упрощает создание собственных форм, которые работают как стандартные диалоговые окна.
  • Добавление меню с помощью элемента управления MainMenu

    Элемент управления MainMenu - это инструмент, с помощью которого в программу можно добавить меню и настроить их в окне Properties (Свойства). С помощью MainMenu можно добавлять новые меню, изменять и удалять существующие. В меню можно добавить специальные возможности: клавиши ускоренного доступа, отметки "включено/выключено" и сочетания клавиш. После того, как меню добавлено в форму, для обработки команд меню использовать процедуры обработки событий. В следующем упражнении с помощью элемента управления MainMenu мы создадим меню Clock, команды которого показывает текущую дату и время.

    Создание меню

  • Запустите Visual Studio.
  • В меню File (Файл) выберите New (Создать), а затем Project (Проект). Появится диалоговое окно New Project (Создать проект).
  • В папке c:\vbnet03sbs\Гл.4 создайте новый проект Windows Application на Visual Basic с именем MyMenu.
  • Выберите элемент управления 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 добавит команду к меню и выделит следующий элемент подменю.
  • Наберите слово Время, а затем нажмите клавишу (Enter). Теперь у вас есть меню Дата с двумя командами меню - День и Время. Если необходимо, можно вводить дополнительные меню и команды, но для данного примера этого достаточно. Форма будет выглядеть примерно так.

  • Чтобы закрыть Menu Designer (Конструктор меню), щелкните на поле формы. Menu Designer (Конструктор меню) закроется, и в среде разработки будет полностью видна форма, а меню исчезнет. Куда оно делось? Оно на месте, только не показывается. Чтобы увидеть меню и начать с ним работать, нужно щелкнуть на его названии.
  • В поле формы нажмите слово Дата. Меню появляется снова, с уже знакомыми полями Type Here (Прототип для текста). Теперь его опять можно настраивать.
  • Добавление клавиш доступа к командам меню

    В большинстве приложений команды меню можно вызывать с помощью клавиатуры. Например, чтобы в Visual Studio открыть меню File (Файл), нужно нажать клавишу (Alt) а затем (Ф). Когда меню File (Файл) откроется, то, чтобы выполнить команду Print (Печать), достаточно нажать на клавиатуре (П). Клавиши, которые вы нажимаете вместе с (Alt) или в открытом меню, называются клавишами доступа (или клавишами быстрого доступа ). В конкретном элементе меню клавишу доступа можно определить по подчеркнутому символу.

    Чтобы добавить в главное меню клавишу доступа, активизируйте Menu Designer (Конструктор меню) и введите перед требуемой буквой в имени меню символ "амперсанд" (). Во время выполнения программы соответствующая клавиша на клавиатуре будет работать как клавиша быстрого доступ к меню.

    Совет. По умолчанию Windows 2000 не подчеркивает в программе клавиши доступа до тех пор, пока пользователь не нажмет в первый раз клавишу (Alt). Это поведение можно отключить на закладке Effects (Эффекты) в свойствах Display (Экран).

    Сейчас мы добавим клавиши доступа для меню Дата.

    Соглашения о пунктах меню

    По соглашению, в приложениях для Microsoft Windows каждое название и команды меню начинаются с заглавной буквы. Часто первыми двумя командами меню в строке меню являются Файл (File) и Правка (Edit), а последним является Справка (Help). Часто встречаются названия команд View (Вид), Формат (Format) и Окно (Window). Не имеет значения, какие меню и команды вы используете в приложении - главное, чтобы они были понятны и соответствовали своим названиям. Меню и команды должны быть просты в использовании и иметь как можно больше общего с другими приложениями для Windows. При создании элементов меню придерживайтесь следующих рекомендаций.

  • Используйте короткие и ясные названия, состоящие из одного или максимум двух слов.
  • Каждому элементу меню назначайте клавишу доступа. Если возможно, используйте для этого их первую букву.
  • У элементов меню, расположенных на одном уровне видимости, клавиши доступа не должны совпадать.
  • Если команда используется как переключатель "включено/выключено", то когда она активна, рядом с ней должна быть видна галочка. Чтобы добавить такую пометку, в окне Properties (Свойства) для этой команды свойство Checked должно иметь значение True.
  • Если команда при нажатии выполняется не сразу, а от пользователя потребуется дополнительные действия, поставьте после такой команды многоточие ( $$\dots$$ ). Оно указывает, что если пользователь выберет эту строку, то откроется диалоговое окно.
  • Добавление клавиш доступа

  • На форме выберите меню Дата, а затем щелкните на нем еще раз. В названии появится курсор редактирования текста. Появление текстового курсора означает, что название меню можно изменить или добавить символ , чтобы обозначить клавишу доступа.
  • Чтобы убедиться, что курсор находится перед первой буквой, нажмите на клавишу со стрелкой влево. Курсор будет мигать перед буквой "Д" в слове Дата.
  • Введите (амперсанд), чтобы указать, что буква "Д" является клавишей доступа для меню Дата.
  • В списке меню выберите команду Число, а затем щелкните на ней еще раз, чтобы появился курсор редактирования текста.
  • Введите (амперсанд) перед буквой "Ч". Теперь буква "ч" определена как клавиша доступа для команды Число.
  • В списке меню выберите команду Время, а затем щелкните на этой команде второй раз, чтобы появился курсор.
  • Введите (амперсанд) перед буквой "В". Теперь буква "В" определена как клавиша доступа для команды Время.
  • Нажмите клавишу (Enter). Нажатие на (Enter) фиксирует изменения в тексте. Ваша форма будет выглядеть примерно так.

    Теперь с помощью Конструктора меню давайте изменим порядок команд День и Время. Изменение порядка элементов меню - это важный навык, так как это требуется довольно часто.

  • Изменение порядка элементов меню

  • Выберите в форме меню Дата, чтобы развернуть элементы этого меню. Изменить порядок элементов очень просто - нужно просто перетащить элемент на новое место в меню.
  • Перетащите надпись Время на надпись День и отпустите клавишу мыши. Перетаскивание элемента меню поверх другого элемента означает, что вы хотите разместить его перед вторым элементом. Visual Studio немедленно перемещает элемент меню Время на новое место перед элементом День.
  • Мы закончили создавать пользовательский интерфейс для меню Дата. Теперь нужно запрограммировать процедуры, соответствующие строкам меню, для обработки выбора пользователя.

    Совет. Чтобы удалить из меню ненужный элемент, щелкните на этом элементе, а затем нажмите клавишу (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 с помощью процедуры Дата и время. Формат системного времени можно изменить там же в Региональных настройках.

  • Нажмите на клавишу со стрелкой вниз. Visual Basic интерпретирует строку и, если потребуется, изменит заглавные буквы и добавит или удалит пробелы. Visual Basic проверяет каждую строку в процессе ее ввода и ищет в них синтаксические ошибки. Набор строки можно закончить, нажав клавишу (Enter), стрелку вверх или стрелку вниз.
  • В Solution Explorer (Обозревателе решений) нажмите кнопку View designer (Просмотреть конструктор), а затем дважды щелкните мышью на команде День в меню Дата. В редакторе кода откроется процедура обработки событий MenuItem2_Click. Эта процедура исполняется тогда, когда пользователь щелкает в меню Дата на команде День.
  • Добавьте в программу следующий оператор

    Label1.Text = DateString

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

    Совет. Свойство DateString в Visual Basic возвращает текущую системную дату. Ее можно установить в разделе Дата и время Панели управления; формат системного времени можно изменить там же в Региональных настройках.

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

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

  • На стандартной панели инструментов нажмите кнопку Save All (Сохранить все).
  • Примечание. Полную версию программы можно найти по адресу c:\ vbnet03sbs\Гл.4\menu.

    Запуск программы Menu

  • На стандартной панели инструментов нажмите кнопку Start (Начать). Программа Menu запустится в среде разработки.
  • В строке меню выберите пункт Дата. Появится меню Дата.
  • Выберите команду Время. В поле надписи появится текущее системное время, как показано ниже.

    Теперь посмотрим, какое сегодня число.

  • Нажмите и отпустите клавишу (Alt). В строке меню выделится меню Дата.
  • Чтобы раскрыть меню Дата, нажмите Д. Меню появится на экране.
  • Чтобы показать сегодняшнее число, нажмите Ч. В поле надписи появится дата.
  • Чтобы остановить программу, нажмите кнопку Закрыть в строке заголовка программы.
  • Поздравляем! Вы создали работающую программу, в которой используются меню и клавиши доступа. В следующем упражнении вы узнаете, как использовать меню для показа стандартных диалоговых окон.

    Свойства и функции системных часов

    Чтобы получить от системных часов информацию о времени, можно использовать их различные свойства и функции. Информация о времени может потребоваться в программах при создании собственных календарей, часов или оповещений. В следующей таблице содержится перечень наиболее полезных функций системных часов. За дополнительной информацией обращайтесь к справочной системе 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, чтобы сохранить на диске оба проекта.)

    Добавление элементов управления OpenFileDialog и ColorDialog

  • Если вы не создавали проект Menu, в меню File (Файл) выберите Open (Открыть), затем Project (Проект), в папке c:\vbnet03sbs\Гл.4\menu выберите файл проекта Menu.vbproj, а затем нажмите кнопку Open (Открыть). Если форма не видна, дважды щелкните мышью в Solution Explorer (Обозревателе решений) на Form1.vb.

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

  • В области элементов на закладке Windows Forms выберите элемент управления OpenFileDialog, а затем щелкните мышкой в области компонентов, где уже есть объект MainMenu1.

    Совет. Если вы не видите OpenFileDialog в области элементов, то он может быть за пределами видимости. Чтобы промотать список в области элементов, щелкните на нижней стрелке прокрутки, находящейся рядом с закладкой Clipboard Ring (Буфер обмена).

    В области компонентов появится объект диалогового окна для открытия файла.

  • В области элементов на закладке Windows Forms выберите элемент управления ColorDialog, а затем щелкните на области компонентов, расположенной ниже поля формы. Теперь область компонентов выглядит так.

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

  • Теперь с помощью элемента управления PictureBox создайте область для показа изображений. Этот объект показывает в поле формы содержимое из файлов изображений. На этот раз мы выведем на поле формы картинку, используя диалоговое окно для открытия файла.

    Добавление объекта области показа изображения

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

    Добавление меню File (Файл)

  • В поле формы щелкните на меню Дата, затем на ячейке Type Here (Прототип для текста), расположенной справа от этого меню. Теперь нужно добавить в программу меню Файл, в котором будут команды Открыть, Закрыть и Выход.
  • Чтобы создать меню Файл с буквой "Ф" в качестве клавиши доступа, введите Файл.
  • Нажмите клавишу со стрелкой вниз, а затем, чтобы создать команду Открыть $$\dots$$ с буквой "O" в качестве клавиши доступа, введите Открыть $$\dots$$ . Команда Открыть будет использоваться для загрузки точечных изображений. Так как эта команда должна будет открывать диалоговое окно, добавьте к ее имени многоточие.
  • Нажмите клавишу со стрелкой вниз, а затем, чтобы создать команду Закрыть с буквой "З" в качестве клавиши доступа, введите Закрыть. Команда Закрыть будет использоваться в программе для закрытия файла с изображением.
  • Нажмите клавишу со стрелкой вниз, а затем, чтобы создать команду Выход с буквой "ы" в качестве клавиши доступа, введите Выход. Команда Выход будет использоваться для закрытия программы. Обратите внимание, что в этом случае в качестве клавиши доступа для команды Выход была использована третья буква, как это сделано во многих приложениях для Windows.
  • Чтобы передвинуть меню Файл на первое место, просто перетащите его на меню Дата. В Menu Designer (Конструкторе меню) целые меню можно перемещать точно так же, как и отдельные команды внутри меню. Имеет смысл сделать меню Файл первым меню программы. Ваша форма должна выглядеть примерно так.

  • Изменение имен объектов для элементов меню Файл

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

    Важное замечание. Имя любого объекта (его свойство Name) в программе на Visual Basic должно состоять из латинских букв или цифр. Замена имени на русское или использование букв русского алфавита недопустимо, так как может вызвать ошибки в программе.

    Давайте изменим имена объектов из меню Файл и сделаем их такими, чтобы их было легче найти в тексте программы.

    Изменение имен объектов

  • Выберите на форме меню Файл и в окне Properties (Свойства) измените его свойство Name на mnuFile. (Свойство Name находится в категории Design (Проектирование) и заключено в круглые скобки).

    Обычно программисты начинают имена объектов с трехбуквенной приставки, которая определяет, к какому элементу управления или библиотеке относится данный объект или от какого объекта он является производным. Здесь мы использовали приставку mnu, чтобы указать, что этот объект является элементом меню, а слово File напоминает, что это меню Файл из строки меню. Для идентификации различных типов объектов используются и другие трехбуквенные расширения.

  • Выберите элемент меню Открыть: и измените его свойство Name на mnuOpenItem.
  • Выберите элемент меню Закрыть и измените его свойство Name на mnuCloseItem.
  • Выберите элемент меню Выход и измените его свойство Name на mnuExitItem.
  • Чтобы сохранить сделанные изменения, нажмите кнопку Save All (Сохранить все) на стандартной панели инструментов.
  • Такие имена объектов меню сделают вашу программу более понятной. Другие объекты в проекте (надпись, область показа изображения, другие пункты меню) тоже можно переименовать. Как мы уже писали, это делать необязательно.

    Отключение команды меню

    В обычном приложении для Windows не все команды меню доступны одновременно. Например, в обычном меню Правка команда Вставить доступна только тогда, когда данные скопированы в буфер обмена. Элемент меню можно отключить, задав для свойства Enabled этого объекта меню значение False. Когда команда отключена, в строке меню она окрашена в серый цвет.

    В следующем упражнении мы отключим команду Закрыть в меню Файл. (Команда Закрыть может использоваться только после того, как файл уже был открыт в программе). Далее в этой лекции мы добавим в процедуру обработки события команды Открыть оператор, который в нужный момент включает команду Закрыть.

    Отключение команды Закрыть

  • В меню Файл программы Menu выберите команду Закрыть.
  • В окне Properties (Свойства) для свойства Enabled объекта mnuCloseItem выберите значение False.
  • Теперь, чтобы продемонстрировать, как работает диалоговое окно выбора цвета, необходимо добавить в меню Дата команду Цвет текста. Диалоговое окно выбора цвета c помощью свойства Color возвращает в программу вновь выбранный цвет. Это свойство будет использоваться для изменения цвета текста в объекте Label1.

    Добавление команды Цвет текста в меню Дата

  • Выберите меню Дата, а затем щелкните на нижней ячейке Прототип для текста.
  • Чтобы добавить в это меню команду Цвет текста с клавишей "Ц" в качестве клавиши доступа, введите Цвет текста $$\dots$$ . Команда будет добавлена в меню Дата. Эта команда заканчивается многоточием, которое указывает, что при ее выборе откроется диалоговое окно.
  • В окне Properties (Свойства) измените свойство 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 (файлы .emf и .wmf), значки (файлы .ico), формат Joint Photographic Experts Group (файлы .jpg и .jpeg), формат Portable Network Graphics (файлы .png) и формат Graphics Interchange Format (файлы .gif). Попытка показать в объекте изображения файл .txt приведет к возникновению ошибки в момент выполнения. Чтобы добавить в список Filter дополнительные элементы, между ними нужно ввести символ (|). Например, при следующем значении фильтра

    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 - это поле надписи, которое используется в форме для показа текущих даты и времени. При работе программы вы будете выбирать в диалоговом окне цвет, и он будет использован для текста в этой надписи.

  • Чтобы сохранить изменения, нажмите кнопку SaveAll (Сохранить все) на стандартной панели инструментов.
  • Управление выбором цвета с помощью установки свойств диалогового окна выбора цвета

    Диалоговое окно выбора цвета тоже можно настроить. Например, можно управлять тем набором цветов, которые будут предоставлены на выбор пользователя при открытии окна. Эти параметры можно настроить в окне Properties (Свойства) в среде разработки или задать их в тексте программы перед открытием этого диалогового окна, используя метод ShowDialog. Следующая таблица содержит список наиболее часто используемых свойств элемента управления ColorDialog. Чтобы задействовать ту или иную настройку, соответствующему свойству должно быть присвоено значение True, чтобы отменить настройку - значение False.

    Свойство Значение
    AllowFullOpen Если присвоено значение True, в диалоговом окне будет работать кнопка Define Custom Colors (Определить цвет).
    AnyColor Если присвоено значение True, пользователь сможет выбрать любой цвет из показанных в диалоговом окне.
    FullOpen Если присвоено значение True, при открытии диалогового окна будет видна область Custom Colors (Дополнительные цвета).
    ShowHelp Присвойте True, если нужно включить в диалоговом окне кнопку Help (Справка).
    SolidColorOnly Если присвоено значение True, пользователь сможет выбрать только "чистые" цвета (цвета со смешением будут отключены).

    Теперь давайте запустим программу Menu и поэкспериментируем с созданными нами меню и диалоговыми окнами.

    Запуск программы Menu

  • На стандартной панели инструментов нажмите кнопку Start (Начать). Программа запустится, и в строке меню появятся меню Файл и Дата.
  • В меню Файл запущенной программы выберите Открыть. Появится диалоговое окно Открыть. Обратите внимание на текст Точечный рисунок (*.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.)

  • Откройте меню Файл. Теперь команда Закрыть отключена, так как в области вывода изображений картинки нет.

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

    Следующий шаг: привязка сочетаний клавиш к пунктам меню

    С помощью элемента управления MainMenu можно назначать создаваемым меню сочетания клавиш. Сочетания клавиш - это комбинация клавиш на клавиатуре, нажав которую пользователь может вызвать команду меню не открывая его. Например, в обычном меню Edit (Правка) в приложении Windows (например, в Microsoft Word) можно выделить текст и скопировать его в буфер обмена, нажав клавиши (Ctrl)+(C). Эти сочетания настраиваются в свойстве Shortcut элемента управления MainMenu. Давайте назначим два сочетания клавиш для меню Дата в программе Menu.

    Определение сочетания клавиш для меню Дата

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

    Прежде чем можно будет задать для команды меню сочетание клавиш, ее необходимо выделить. Сочетание клавиш определяется в свойстве Shortcut выбранной команды, в окне Properties (Свойства) . Для объекта главного меню автоматически предлагается много вариантов клавиш. Давайте назначим для команды Время сочетание (Ctrl)+(T).

  • Откройте окно Properties (Свойства), выберите свойство Shortcut, затем нажмите стрелку раскрывающегося списка во столбце справа, прокрутите этот список и выберите CtrlT. Окно Properties (Свойства) будет выглядеть так, как показано на рисунке справа.

    Совет. Обычно Visual Basic при выполнении программы показывает в меню сочетания клавиш, чтобы подсказать пользователям, какие клавиши следует нажимать. Чтобы скрыть от пользователя эти комбинации клавиш (например, если для них не хватает места), задайте для свойства ShowShortcut значение False. Сочетания клавиш по-прежнему будут работать, но подсказок в меню пользователи не увидят.

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

  • Щелкните на меню Дата. Рядом с командами Время и День будут показаны сочетания клавиш. Visual Basic дописывает эти комбинации клавиш, когда они определены с помощью свойства Shortcut.
  • В меню Файл программы щелкните на команде Выход. Программа остановится, и появится среда разработки Visual Studio.
  • Краткая справка по лекции 4

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

    В этой лекции вы узнаете, как:

  • создать меню с помощью элемента управления MainMenu;
  • обработать выбор пункта меню в коде программы;
  • использовать элементы управления OpenFile, FileDialog и ColorDialog в специальных диалоговых окнах.
  • В лекции 3 элементы управления Microsoft Visual Studio использовались для получения ввода от пользователя, работающего с программой. В этой лекции вы узнаете, как предоставить пользователям разные варианты, используя для этого профессионально выглядящие меню и диалоговые окна. Меню расположено в строке меню и представляет собой список команд, объединенных в логические группы. Когда пользователь нажимает на названии группы, то в раскрывающемся списке появляются команды этого меню. Большинство команд меню исполняется немедленно после нажатия; например, если пользователь выбирает в меню Edit (Правка) команду Copy (Копировать), то информация немедленно копируется в буфер обмена. Однако если команда меню оканчивается многоточием (...),Visual Basic выводит диалоговое окно, запрашивающее перед исполнением команды дополнительную информацию. В этой лекции вы узнаете, как применять элемент управления MainMenu для добавления в вашу программу стандартных меню и как применять два элемента управления диалоговых окон.

    Что нового в Visual Basic .NET?

  • Для создания меню больше не используется инструмент Menu Editor (Редактор меню), имевшийся в Visual Basic 6. Вместо этого с помощью элемента управления MainMenu в поле формы создается объект главного меню, а затем его свойства задаются в Menu Designer (Конструкторе меню). Однако выбор пунктов меню пользователем по-прежнему обрабатывается в коде программы.
  • При создании стандартных диалоговых окон больше не используется элемент управления CommonDialog. Вместо этого стандартные диалоговые окна добавляются в проект с помощью одного из семи элементов управления Windows Forms. Эти элементы управления называются OpenFileDialog, SaveFileDialog, FontDialog, ColorDialog, PrintDialog, PrintPreviewDialog и PageSetupDialog.
  • В составе форм теперь имеются метод ShowDialog и свойство DialogResult, что упрощает создание собственных форм, которые работают как стандартные диалоговые окна.
  • Добавление меню с помощью элемента управления MainMenu

    Элемент управления MainMenu - это инструмент, с помощью которого в программу можно добавить меню и настроить их в окне Properties (Свойства). С помощью MainMenu можно добавлять новые меню, изменять и удалять существующие. В меню можно добавить специальные возможности: клавиши ускоренного доступа, отметки "включено/выключено" и сочетания клавиш. После того, как меню добавлено в форму, для обработки команд меню использовать процедуры обработки событий. В следующем упражнении с помощью элемента управления MainMenu мы создадим меню Clock, команды которого показывает текущую дату и время.

    Создание меню

  • Запустите Visual Studio.
  • В меню File (Файл) выберите New (Создать), а затем Project (Проект). Появится диалоговое окно New Project (Создать проект).
  • В папке c:\vbnet03sbs\Гл.4 создайте новый проект Windows Application на Visual Basic с именем MyMenu.
  • Выберите элемент управления 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 добавит команду к меню и выделит следующий элемент подменю.
  • Наберите слово Время, а затем нажмите клавишу (Enter). Теперь у вас есть меню Дата с двумя командами меню - День и Время. Если необходимо, можно вводить дополнительные меню и команды, но для данного примера этого достаточно. Форма будет выглядеть примерно так.

  • Чтобы закрыть Menu Designer (Конструктор меню), щелкните на поле формы. Menu Designer (Конструктор меню) закроется, и в среде разработки будет полностью видна форма, а меню исчезнет. Куда оно делось? Оно на месте, только не показывается. Чтобы увидеть меню и начать с ним работать, нужно щелкнуть на его названии.
  • В поле формы нажмите слово Дата. Меню появляется снова, с уже знакомыми полями Type Here (Прототип для текста). Теперь его опять можно настраивать.
  • Добавление клавиш доступа к командам меню

    В большинстве приложений команды меню можно вызывать с помощью клавиатуры. Например, чтобы в Visual Studio открыть меню File (Файл), нужно нажать клавишу (Alt) а затем (Ф). Когда меню File (Файл) откроется, то, чтобы выполнить команду Print (Печать), достаточно нажать на клавиатуре (П). Клавиши, которые вы нажимаете вместе с (Alt) или в открытом меню, называются клавишами доступа (или клавишами быстрого доступа ). В конкретном элементе меню клавишу доступа можно определить по подчеркнутому символу.

    Чтобы добавить в главное меню клавишу доступа, активизируйте Menu Designer (Конструктор меню) и введите перед требуемой буквой в имени меню символ "амперсанд" (). Во время выполнения программы соответствующая клавиша на клавиатуре будет работать как клавиша быстрого доступ к меню.

    Совет. По умолчанию Windows 2000 не подчеркивает в программе клавиши доступа до тех пор, пока пользователь не нажмет в первый раз клавишу (Alt). Это поведение можно отключить на закладке Effects (Эффекты) в свойствах Display (Экран).

    Сейчас мы добавим клавиши доступа для меню Дата.

    Соглашения о пунктах меню

    По соглашению, в приложениях для Microsoft Windows каждое название и команды меню начинаются с заглавной буквы. Часто первыми двумя командами меню в строке меню являются Файл (File) и Правка (Edit), а последним является Справка (Help). Часто встречаются названия команд View (Вид), Формат (Format) и Окно (Window). Не имеет значения, какие меню и команды вы используете в приложении - главное, чтобы они были понятны и соответствовали своим названиям. Меню и команды должны быть просты в использовании и иметь как можно больше общего с другими приложениями для Windows. При создании элементов меню придерживайтесь следующих рекомендаций.

  • Используйте короткие и ясные названия, состоящие из одного или максимум двух слов.
  • Каждому элементу меню назначайте клавишу доступа. Если возможно, используйте для этого их первую букву.
  • У элементов меню, расположенных на одном уровне видимости, клавиши доступа не должны совпадать.
  • Если команда используется как переключатель "включено/выключено", то когда она активна, рядом с ней должна быть видна галочка. Чтобы добавить такую пометку, в окне Properties (Свойства) для этой команды свойство Checked должно иметь значение True.
  • Если команда при нажатии выполняется не сразу, а от пользователя потребуется дополнительные действия, поставьте после такой команды многоточие ( $$\dots$$ ). Оно указывает, что если пользователь выберет эту строку, то откроется диалоговое окно.
  • Добавление клавиш доступа

  • На форме выберите меню Дата, а затем щелкните на нем еще раз. В названии появится курсор редактирования текста. Появление текстового курсора означает, что название меню можно изменить или добавить символ , чтобы обозначить клавишу доступа.
  • Чтобы убедиться, что курсор находится перед первой буквой, нажмите на клавишу со стрелкой влево. Курсор будет мигать перед буквой "Д" в слове Дата.
  • Введите (амперсанд), чтобы указать, что буква "Д" является клавишей доступа для меню Дата.
  • В списке меню выберите команду Число, а затем щелкните на ней еще раз, чтобы появился курсор редактирования текста.
  • Введите (амперсанд) перед буквой "Ч". Теперь буква "ч" определена как клавиша доступа для команды Число.
  • В списке меню выберите команду Время, а затем щелкните на этой команде второй раз, чтобы появился курсор.
  • Введите (амперсанд) перед буквой "В". Теперь буква "В" определена как клавиша доступа для команды Время.
  • Нажмите клавишу (Enter). Нажатие на (Enter) фиксирует изменения в тексте. Ваша форма будет выглядеть примерно так.

    Теперь с помощью Конструктора меню давайте изменим порядок команд День и Время. Изменение порядка элементов меню - это важный навык, так как это требуется довольно часто.

  • Изменение порядка элементов меню

  • Выберите в форме меню Дата, чтобы развернуть элементы этого меню. Изменить порядок элементов очень просто - нужно просто перетащить элемент на новое место в меню.
  • Перетащите надпись Время на надпись День и отпустите клавишу мыши. Перетаскивание элемента меню поверх другого элемента означает, что вы хотите разместить его перед вторым элементом. Visual Studio немедленно перемещает элемент меню Время на новое место перед элементом День.
  • Мы закончили создавать пользовательский интерфейс для меню Дата. Теперь нужно запрограммировать процедуры, соответствующие строкам меню, для обработки выбора пользователя.

    Совет. Чтобы удалить из меню ненужный элемент, щелкните на этом элементе, а затем нажмите клавишу (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 с помощью процедуры Дата и время. Формат системного времени можно изменить там же в Региональных настройках.

  • Нажмите на клавишу со стрелкой вниз. Visual Basic интерпретирует строку и, если потребуется, изменит заглавные буквы и добавит или удалит пробелы. Visual Basic проверяет каждую строку в процессе ее ввода и ищет в них синтаксические ошибки. Набор строки можно закончить, нажав клавишу (Enter), стрелку вверх или стрелку вниз.
  • В Solution Explorer (Обозревателе решений) нажмите кнопку View designer (Просмотреть конструктор), а затем дважды щелкните мышью на команде День в меню Дата. В редакторе кода откроется процедура обработки событий MenuItem2_Click. Эта процедура исполняется тогда, когда пользователь щелкает в меню Дата на команде День.
  • Добавьте в программу следующий оператор

    Label1.Text = DateString

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

    Совет. Свойство DateString в Visual Basic возвращает текущую системную дату. Ее можно установить в разделе Дата и время Панели управления; формат системного времени можно изменить там же в Региональных настройках.

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

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

  • На стандартной панели инструментов нажмите кнопку Save All (Сохранить все).
  • Примечание. Полную версию программы можно найти по адресу c:\ vbnet03sbs\Гл.4\menu.

    Запуск программы Menu

  • На стандартной панели инструментов нажмите кнопку Start (Начать). Программа Menu запустится в среде разработки.
  • В строке меню выберите пункт Дата. Появится меню Дата.
  • Выберите команду Время. В поле надписи появится текущее системное время, как показано ниже.

    Теперь посмотрим, какое сегодня число.

  • Нажмите и отпустите клавишу (Alt). В строке меню выделится меню Дата.
  • Чтобы раскрыть меню Дата, нажмите Д. Меню появится на экране.
  • Чтобы показать сегодняшнее число, нажмите Ч. В поле надписи появится дата.
  • Чтобы остановить программу, нажмите кнопку Закрыть в строке заголовка программы.
  • Поздравляем! Вы создали работающую программу, в которой используются меню и клавиши доступа. В следующем упражнении вы узнаете, как использовать меню для показа стандартных диалоговых окон.

    Свойства и функции системных часов

    Чтобы получить от системных часов информацию о времени, можно использовать их различные свойства и функции. Информация о времени может потребоваться в программах при создании собственных календарей, часов или оповещений. В следующей таблице содержится перечень наиболее полезных функций системных часов. За дополнительной информацией обращайтесь к справочной системе 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, чтобы сохранить на диске оба проекта.)

    Добавление элементов управления OpenFileDialog и ColorDialog

  • Если вы не создавали проект Menu, в меню File (Файл) выберите Open (Открыть), затем Project (Проект), в папке c:\vbnet03sbs\Гл.4\menu выберите файл проекта Menu.vbproj, а затем нажмите кнопку Open (Открыть). Если форма не видна, дважды щелкните мышью в Solution Explorer (Обозревателе решений) на Form1.vb.

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

  • В области элементов на закладке Windows Forms выберите элемент управления OpenFileDialog, а затем щелкните мышкой в области компонентов, где уже есть объект MainMenu1.

    Совет. Если вы не видите OpenFileDialog в области элементов, то он может быть за пределами видимости. Чтобы промотать список в области элементов, щелкните на нижней стрелке прокрутки, находящейся рядом с закладкой Clipboard Ring (Буфер обмена).

    В области компонентов появится объект диалогового окна для открытия файла.

  • В области элементов на закладке Windows Forms выберите элемент управления ColorDialog, а затем щелкните на области компонентов, расположенной ниже поля формы. Теперь область компонентов выглядит так.

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

  • Теперь с помощью элемента управления PictureBox создайте область для показа изображений. Этот объект показывает в поле формы содержимое из файлов изображений. На этот раз мы выведем на поле формы картинку, используя диалоговое окно для открытия файла.

    Добавление объекта области показа изображения

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

    Добавление меню File (Файл)

  • В поле формы щелкните на меню Дата, затем на ячейке Type Here (Прототип для текста), расположенной справа от этого меню. Теперь нужно добавить в программу меню Файл, в котором будут команды Открыть, Закрыть и Выход.
  • Чтобы создать меню Файл с буквой "Ф" в качестве клавиши доступа, введите Файл.
  • Нажмите клавишу со стрелкой вниз, а затем, чтобы создать команду Открыть $$\dots$$ с буквой "O" в качестве клавиши доступа, введите Открыть $$\dots$$ . Команда Открыть будет использоваться для загрузки точечных изображений. Так как эта команда должна будет открывать диалоговое окно, добавьте к ее имени многоточие.
  • Нажмите клавишу со стрелкой вниз, а затем, чтобы создать команду Закрыть с буквой "З" в качестве клавиши доступа, введите Закрыть. Команда Закрыть будет использоваться в программе для закрытия файла с изображением.
  • Нажмите клавишу со стрелкой вниз, а затем, чтобы создать команду Выход с буквой "ы" в качестве клавиши доступа, введите Выход. Команда Выход будет использоваться для закрытия программы. Обратите внимание, что в этом случае в качестве клавиши доступа для команды Выход была использована третья буква, как это сделано во многих приложениях для Windows.
  • Чтобы передвинуть меню Файл на первое место, просто перетащите его на меню Дата. В Menu Designer (Конструкторе меню) целые меню можно перемещать точно так же, как и отдельные команды внутри меню. Имеет смысл сделать меню Файл первым меню программы. Ваша форма должна выглядеть примерно так.

  • Изменение имен объектов для элементов меню Файл

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

    Важное замечание. Имя любого объекта (его свойство Name) в программе на Visual Basic должно состоять из латинских букв или цифр. Замена имени на русское или использование букв русского алфавита недопустимо, так как может вызвать ошибки в программе.

    Давайте изменим имена объектов из меню Файл и сделаем их такими, чтобы их было легче найти в тексте программы.

    Изменение имен объектов

  • Выберите на форме меню Файл и в окне Properties (Свойства) измените его свойство Name на mnuFile. (Свойство Name находится в категории Design (Проектирование) и заключено в круглые скобки).

    Обычно программисты начинают имена объектов с трехбуквенной приставки, которая определяет, к какому элементу управления или библиотеке относится данный объект или от какого объекта он является производным. Здесь мы использовали приставку mnu, чтобы указать, что этот объект является элементом меню, а слово File напоминает, что это меню Файл из строки меню. Для идентификации различных типов объектов используются и другие трехбуквенные расширения.

  • Выберите элемент меню Открыть: и измените его свойство Name на mnuOpenItem.
  • Выберите элемент меню Закрыть и измените его свойство Name на mnuCloseItem.
  • Выберите элемент меню Выход и измените его свойство Name на mnuExitItem.
  • Чтобы сохранить сделанные изменения, нажмите кнопку Save All (Сохранить все) на стандартной панели инструментов.
  • Такие имена объектов меню сделают вашу программу более понятной. Другие объекты в проекте (надпись, область показа изображения, другие пункты меню) тоже можно переименовать. Как мы уже писали, это делать необязательно.

    Отключение команды меню

    В обычном приложении для Windows не все команды меню доступны одновременно. Например, в обычном меню Правка команда Вставить доступна только тогда, когда данные скопированы в буфер обмена. Элемент меню можно отключить, задав для свойства Enabled этого объекта меню значение False. Когда команда отключена, в строке меню она окрашена в серый цвет.

    В следующем упражнении мы отключим команду Закрыть в меню Файл. (Команда Закрыть может использоваться только после того, как файл уже был открыт в программе). Далее в этой лекции мы добавим в процедуру обработки события команды Открыть оператор, который в нужный момент включает команду Закрыть.

    Отключение команды Закрыть

  • В меню Файл программы Menu выберите команду Закрыть.
  • В окне Properties (Свойства) для свойства Enabled объекта mnuCloseItem выберите значение False.
  • Теперь, чтобы продемонстрировать, как работает диалоговое окно выбора цвета, необходимо добавить в меню Дата команду Цвет текста. Диалоговое окно выбора цвета c помощью свойства Color возвращает в программу вновь выбранный цвет. Это свойство будет использоваться для изменения цвета текста в объекте Label1.

    Добавление команды Цвет текста в меню Дата

  • Выберите меню Дата, а затем щелкните на нижней ячейке Прототип для текста.
  • Чтобы добавить в это меню команду Цвет текста с клавишей "Ц" в качестве клавиши доступа, введите Цвет текста $$\dots$$ . Команда будет добавлена в меню Дата. Эта команда заканчивается многоточием, которое указывает, что при ее выборе откроется диалоговое окно.
  • В окне Properties (Свойства) измените свойство 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 (файлы .emf и .wmf), значки (файлы .ico), формат Joint Photographic Experts Group (файлы .jpg и .jpeg), формат Portable Network Graphics (файлы .png) и формат Graphics Interchange Format (файлы .gif). Попытка показать в объекте изображения файл .txt приведет к возникновению ошибки в момент выполнения. Чтобы добавить в список Filter дополнительные элементы, между ними нужно ввести символ (|). Например, при следующем значении фильтра

    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 - это поле надписи, которое используется в форме для показа текущих даты и времени. При работе программы вы будете выбирать в диалоговом окне цвет, и он будет использован для текста в этой надписи.

  • Чтобы сохранить изменения, нажмите кнопку SaveAll (Сохранить все) на стандартной панели инструментов.
  • Управление выбором цвета с помощью установки свойств диалогового окна выбора цвета

    Диалоговое окно выбора цвета тоже можно настроить. Например, можно управлять тем набором цветов, которые будут предоставлены на выбор пользователя при открытии окна. Эти параметры можно настроить в окне Properties (Свойства) в среде разработки или задать их в тексте программы перед открытием этого диалогового окна, используя метод ShowDialog. Следующая таблица содержит список наиболее часто используемых свойств элемента управления ColorDialog. Чтобы задействовать ту или иную настройку, соответствующему свойству должно быть присвоено значение True, чтобы отменить настройку - значение False.

    Свойство Значение
    AllowFullOpen Если присвоено значение True, в диалоговом окне будет работать кнопка Define Custom Colors (Определить цвет).
    AnyColor Если присвоено значение True, пользователь сможет выбрать любой цвет из показанных в диалоговом окне.
    FullOpen Если присвоено значение True, при открытии диалогового окна будет видна область Custom Colors (Дополнительные цвета).
    ShowHelp Присвойте True, если нужно включить в диалоговом окне кнопку Help (Справка).
    SolidColorOnly Если присвоено значение True, пользователь сможет выбрать только "чистые" цвета (цвета со смешением будут отключены).

    Теперь давайте запустим программу Menu и поэкспериментируем с созданными нами меню и диалоговыми окнами.

    Запуск программы Menu

  • На стандартной панели инструментов нажмите кнопку Start (Начать). Программа запустится, и в строке меню появятся меню Файл и Дата.
  • В меню Файл запущенной программы выберите Открыть. Появится диалоговое окно Открыть. Обратите внимание на текст Точечный рисунок (*.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.)

  • Откройте меню Файл. Теперь команда Закрыть отключена, так как в области вывода изображений картинки нет.

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

    Следующий шаг: привязка сочетаний клавиш к пунктам меню

    С помощью элемента управления MainMenu можно назначать создаваемым меню сочетания клавиш. Сочетания клавиш - это комбинация клавиш на клавиатуре, нажав которую пользователь может вызвать команду меню не открывая его. Например, в обычном меню Edit (Правка) в приложении Windows (например, в Microsoft Word) можно выделить текст и скопировать его в буфер обмена, нажав клавиши (Ctrl)+(C). Эти сочетания настраиваются в свойстве Shortcut элемента управления MainMenu. Давайте назначим два сочетания клавиш для меню Дата в программе Menu.

    Определение сочетания клавиш для меню Дата

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

    Прежде чем можно будет задать для команды меню сочетание клавиш, ее необходимо выделить. Сочетание клавиш определяется в свойстве Shortcut выбранной команды, в окне Properties (Свойства) . Для объекта главного меню автоматически предлагается много вариантов клавиш. Давайте назначим для команды Время сочетание (Ctrl)+(T).

  • Откройте окно Properties (Свойства), выберите свойство Shortcut, затем нажмите стрелку раскрывающегося списка во столбце справа, прокрутите этот список и выберите CtrlT. Окно Properties (Свойства) будет выглядеть так, как показано на рисунке справа.

    Совет. Обычно Visual Basic при выполнении программы показывает в меню сочетания клавиш, чтобы подсказать пользователям, какие клавиши следует нажимать. Чтобы скрыть от пользователя эти комбинации клавиш (например, если для них не хватает места), задайте для свойства ShowShortcut значение False. Сочетания клавиш по-прежнему будут работать, но подсказок в меню пользователи не увидят.

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

  • Щелкните на меню Дата. Рядом с командами Время и День будут показаны сочетания клавиш. Visual Basic дописывает эти комбинации клавиш, когда они определены с помощью свойства Shortcut.
  • В меню Файл программы щелкните на команде Выход. Программа остановится, и появится среда разработки Visual Studio.
  • Краткая справка по лекции 4

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