Программирование >>  Программирование с использованием ajax 

1 ... 162 163 164 [ 165 ] 166 167 168 ... 396


Таблица 16.15. Элементы меню File формы frmContainer

Элемент Свойство

Значение

&New Name

ToolstripMenuItemNew

MergeAction

MatchOnly

Mergelndex

ShortcutKeys

Ctrl + N

&Open Name

ToolStripMenuItemOpen

MergeAction

MatchOnly

Mergelndex

ShortcutKeys

Ctrl + 0

MergeAction

MatchOnly

Mergelndex

E&xit Name

ToolstripMenuItemNewExit

MergeAction

MatchOnly

Mergelndex

2. Нам требуется способ добавления новых окон, поэтому дважды щелкните на

элементе меню New (Создать)

и добавьте следующий код. Этот код совпадает с

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

логового окна.

private void ToolStripMenuItemNew Click(object sender, EventArgs e) f

frmEditor newForm = new frmEditor (this) ;

newForm.ShowO ;

3. В форме frmEditor удалите элемент Open из меню File. Свойства остальных эле-

ментов меню измените так, как показано в табл. 16.16.

Таблица 16.16. Свойства остальных элементов меню

Элемент Свойство

Значение

&File MergeAction

MatchOnly

Mergelndex

&New MergeAction

MatchOnly

Mergelndex

MergeAction

Insert

Mergelndex

&Save MergeAction

Insert

Mergelndex

Save &As MergeAction

Insert

Mergelndex

MergeAction

Insert



Элемент

Свойство

Значение

Mergeindex

&Print

MergeAction

Insert

Mergeindex

Print Preview

MergeAction

Insert

Mergeindex

MergeAction

Insert

Mergeindex

E&xit

Name

ToolstripMenuItemClose

Text

&Close

MergeAction

Insert

Mergeindex

4. Запустите приложение. Два меню File были объединены, но дочернее диалоговое окно все же сохранило меню File, содержащее один элемент - New.

Описание полученных результатов

Элементы, для которых значение свойства MergeAction установлено равным MatchOnly, не перемещаются из одного меню в другое, но в случае элемента меню &File совпадение текста двух элементов ведет к объединению их элементов меню.

Элементы в меню File объединяются в соответствии со значениями свойств Mergedlndex соответствующих элементов. Значения свойства MergeAction тех из них, которые должны оставаться на месте, устанавливаются равными MatchOnly; значения остальных устанавливаются равными Insert.

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

Откройте несколько диалоговых окон, введите в них какой-либо текст, а затем щелкните на меню Save. Откройте новое диалоговое окно и щелкните на меню Open (Открыть) (помните, что команда Save всегда выполняет сохранение в том же файле). Выберите одно из других окон, щелкните на меню Save, вернитесь к новому диалоговому окну и снова щелкните на меню Open. Вы убедитесь, что элементы меню Save всегда переносятся в диалоговое окно, находящееся в фокусе. При каждом выборе диалогового окна меню снова объединяются.

Итак, мы добавили небольшой фрагмент кода в элемент New меню File диалогового окна f rmContainer и удостоверились, что диалоговые окна были созданы. Одно из меню, которое присутствует едва ли не во всех MDI-приложениях - меню Window (Окно). Оно позволяет упорядочивать диалоговые окна и часто отображает ту или иную форму их списка. В следующем практическом занятии мы добавим это меню в свой текстовый редактор.

Окончание табл. 16.16



Практическое занятие ОтСЛеживание ОКОН

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

1. Добавьте в меню формы frmContainer новый элемент меню верхнего уровня &Window. Присвойте ему имя ToolStripMenuItemWindow.

2. Добавьте в новое меню три элемента, перечисленные в табл. 16.17. Таблица 16.17. Элементы меню Window

Свойство Text

ToolStripMenuItemTile

&Tile

ToolStripMenuItemCascade

&Cascade

3. Выберите сам элемент MenuStrip, a не какой-то из отображаемых в нем элементов, и измените свойство MDIWindowListltem на ToolStripMenuItemWindow.

4. Дважды щелкните вначале на элементе Tile, а затем на элементе Cascade, чтобы добавить обработчики событий, и введите следующий код:

private void ToolStripMenuItemTile Click(object sender, EventArgs e)

LayoutMdi(MdiLayout.TileHorizontal);

private void ToolStripMenuItemCascasde Click(object sender, EventArgs e) {

LayoutMdi(MdiLayout.Cascade);

5. Измените конструктор диалогового окна frmEditor следующим образом: public frmEditor (frmContainer parent, int counter)

InitializeComponent();

this.ToolStripComboBoxFonts.Selectedlndex = 0;

Связывание с родительским окном, this.MdiParent = parent;

this.Text = Editor + counter.ToString();

6. Добавьте приватную переменную-член в верхнюю часть кода формы frmContainer и измените конструктор и обработчик событий элемента меню New следующим образом:

public partial class frmContainer : Form

private int mCounter; public frmContainer0 {

InitializeComponent (); mCounter = 1;

frmEditor newForm = new frmEditor (this, mCounter) ; newForm.Show();



1 ... 162 163 164 [ 165 ] 166 167 168 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика