Домашнее задание. Реализовать удаление соответсвующего раздела меню Arrange Icons при закрытии окна.




Создание приложения «Блокнот»

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

Для создания главного меню используется элемент управления MainMenu (в VisualStudio2010 называется MenuStrip), расположенный на панели инструментов ToolBox. Создайте новое приложение и назовите его NotepadCSharp. Установите следующие свойства формы:

Form1, форма, свойство Значение
Name frmmain
Icon \Icon\README.ICO
Text Notepad C#

 

Перетаскиваем элемент управления на форму. Нам предстоит заполнить строки меню следующими пунктами (рис. 2.1):

Рис. 2.1. Пункты главного меню приложения Notepad C#

 

Каждый пункт главного меню имеет свое окно свойств, в котором, подобно другим элементам управления, задаются значения свойств Name и Text (рис. 2.2). В поле Text перед словом New стоит знак & — так называемый амперсанд, указывающий, что N должно быть подчеркнута и будет частью встроенного клавиатурного интерфейса Windows. Когда пользователь на клавиатуре нажимает клавишу Alt и затем N, выводится подменю New.

 

Рис. 2.2. Свойства пункта меню New

 

В Windows есть еще интерфейс для работы с так называемыми быстрыми клавишами, или акселераторами. Сочетание клавиш указывают из перечисления Shortcut. Следует назначать стандартным пунктам общепринятые сочетания клавиш. Горизонтальная разделительная линия используется в тех случаях, когда надо визуально отделить сходные группы задач; для ее появления в свойстве Text пункта меню просто вводим знак тире. Для использования пунктов меню в коде, им также назначают имена (свойство Name), которые особенно важны, т.к. пунктов меню обычно бывает много. Свойства пунктов меню в приложении Notepad C# приводятся в таблице 2.1.

Таблица 2.1. Пункты главного меню приложения Notepad C#
Name Text Shortcut
mnuFile &File  
mnuNew &New CtrlN
mnuOpen &Open CtrlO
mnuSave &Save CtrlS
menuItem5 -  
mnuExit &Exit AltF4
mnuEdit &Edit  
mnuCut Cu&t CtrlX
mnuCopy &Copy CtrlC
mnuPaste &Paste CtrlV
mnuDelete &Delete Del
mnuSelectAll &SelectAll CtrlA
mnuFormat F&ormat  
mnuFont Font…  
mnuColor Color…  
mnuWindow &Window  
mnuArrangeIcons Arrange Icons  
mnuCascade Cascade  
mnuTileHorizontal Tile Horizontal  
mnuTileVertical Tile Vertical  
mnuHelp ?  
mnuAbout About Programm...  

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

Создание MDI-приложений

 

Такие программы, как блокнот и Microsoft Paint, относятся к SDI (Single — Document Interface) приложениям, способным работать только с одним документом. Другие, такие как Microsoft Word или Adobe Photoshop, поддерживают работу сразу с несколькими документами и называются MDI (Multiple — Document Interface) приложениями (рис. 2.3 и 2.4).

Рис. 2.3. SDI приложение Microsoft Paint

 

Рис. 2.4. MDI-приложение Adobe Photoshop

 

В MDI-приложениях главная форма содержит в себе несколько документов, каждый из которых является холстом в графических программах или полем для текста в редакторах. Продолжим работу над приложением Notepad C#. В окне Solution Explorer щелкаем правой кнопкой на имени проекта и в появившемся контекстном меню выбираем Add/ Add Windows Form…. В появившемся окне называем форму – blank.cs. В нашем проекте появилась новая форма — будем называть ее дочерней. В режиме дизайна перетаскиваем на нее элемент управления RichTextBox: в отличие от элемента textBox, размер содержимого текста в нем не ограничивается 64 Кб; кроме того, RichTextBox позволяет редактировать цвет текста, добавлять изображения. Свойству Dock этого элемента устанавливаем значение Fill (рис. 2.5):

Рис. 2.5. Свойство Dock элемента RichTextBox

 

Переходим в режим дизайна формы Frmmain и устанавливаем свойству IsMdiContainer значение true. Цвет формы при этом становится темно-серым. Новые документы будут у нас появляться при нажатии пункта меню New (которому мы установили сочетание клавиш Ctrl+N), поэтому дважды щелкаем в этом пункте и переходим в код:

private void mnuNew_Click(object sender, System.EventArgs e){ //Создаем новый экземпляр формы frm blank frm = new blank(); //Указываем, что родительским контейнером //нового экземпляра будет эта, главная форма. frm.MdiParent = this; //Вызываем форму frm.Show();}

Запускаем приложение. Теперь при нажатии клавиш Ctrl+N или выборе пункта меню New появляется несколько окон, расположенных каскадом. Однако заголовок у них всех одинаковый — blank. При создании нескольких документов, например в Microsoft Word, они называются ДокументN, где N — номер документа. Переключаемся в код формы blank, и в классе blank объявляем переменнуюDocName:

public string DocName = "";

Переключаемся в код формы frmmain и в классе frmmain объявляем переменную openDocuments:

private int openDocuments = 0;

Присваиваем переменной DocName часть названия по шаблону, в который включен счетчик числа открываемых документов, затем это значение передаем свойству Text создаваемой формы frm:

private void mnuNew_Click(object sender, System.EventArgs e){ blank frm = new blank(); frm.DocName = "Untitled " + ++openDocuments; frm.Text = frm.DocName; frm.MdiParent = this; frm.Show();}

Запускаем приложение. Теперь новые документы содержат разные заголовки (рис. 2.6).

Рис. 2.6. Новые документы имеют упорядоченные названия

Перечисление MdiLayout

 

При работе с несколькими документами в MDI-приложениях удобно упорядочивать их на экране. Можно, конечно, распределять формы вручную, но при работе с большим количеством документов это представляется затруднительным. В пункте меню Window реализуем процедуру выравнивания окон.

Создаем обработчиков:

 

private void mnuArrangeIcons_Click(object sender, System.EventArgs e){ this.LayoutMdi(MdiLayout.ArrangeIcons);} private void mnuCascade_Click(object sender, System.EventArgs e){ this.LayoutMdi(MdiLayout.Cascade);} private void mnuTileHorizontal_Click(object sender, System.EventArgs e){ this.LayoutMdi(MdiLayout.TileHorizontal);} private void mnuTileVertical_Click(object sender, System.EventArgs e){ this.LayoutMdi(MdiLayout.TileVertical);}

Метод LayoutMdi содержит перечисление MdiLayout, содержащее четыре члена. ArrangeIcons переключает фокус на выбранную форму, в свойстве MdiList пункта меню ArrangeIcons устанавливаем также значение true. При открытии нескольких новых документов окна располагаются каскадом (рис. 2.6), их можно расположить горизонтально — значение TileHorizontal или вертикально — значениеTileVertical, а затем снова вернуть каскадное расположение — Cascade (рис. 2.7):

Рис. 2.7. Расположение окон TileHorizontal и пункт меню ArrangeIcons

Домашнее задание. Реализовать удаление соответсвующего раздела меню Arrange Icons при закрытии окна.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-12-18 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: