Создание родительских MDI-форм

 

Базой для приложения многодокументного интерфейса (MDI) является родительская MDI-форма. Это форма, содержащая дочерние MDI-окна, которые являются вложенными окнами, когда пользователи взаимодействуют с MDI-приложением. Создание родительской MDI-формы представляет собой несложный процесс, как с помощью конструктора Windows Forms, так и на программном уровне.

 

1. Создайте проект приложения Windows в Visual Studio.

2. В свойстве окна IsMdiContainer установите значение true.

При этом форма назначается в качестве MDI-контейнера для дочерних окон.

 

Примечание

В случае необходимости при настройке свойств в окне Свойства для свойства WindowState также можно задать значение Maximized, так как управлять дочерними MDI-окнами проще, когда родительская форма развернута. Кроме того, следует помнить, что граница родительской MDI-формы будет окрашена в системный цвет (заданный на панели управления Windows), а не в черный цвет, заданный с помощью свойства BackColor.

3. Перетащите элемент управления MenuStrip из панели элементов в форму. Создайте пункт меню верхнего уровня — для свойства Text задайте значение &File, пункты меню должны называться &New и &Close. Также создайте пункт меню верхнего уровня &Window.

Первое меню будет создавать и скрывать пункты меню во время выполнения, а второе меню будет отслеживать открытые дочерние MDI-окна. На этом этапе вы создали родительское MDI-окно.

4. Нажмите клавишу F5 для запуска приложения.

 

 

Создание дочерних форм MDI

 

Дочерние MDI-формы являются ключевым элементом приложений с интерфейсом MDI, так как эти формы являются центром взаимодействия с пользователем.

Далее будет показано, как создать дочернюю MDI-форму, отображающую элемент управления RichTextBox, что аналогично большинству приложений для обработки текстов. Сочетая дочернюю MDI-форму с другими элементами управления, например, с DataGridView, можно создавать дочерние окна с различными возможностями.

 

1. Создайте новый проект Windows Forms в среде Visual Studio. В окне Свойства формы задайте для свойства IsMdiContainer значение true, а для свойства WindowsState значение Maximized.

При этом форма назначается в качестве MDI-контейнера для дочерних окон.

2. Из Toolbox перетащите элемент управления MenuStrip в форму. Присвойте свойству Text значение File.

3. Нажмите кнопку с многоточием (...) рядом со свойством Items и нажмите кнопку Добавить, чтобы добавить два дочерних пункта меню. Присвойте свойству Text этих элементов значение New и Window.

4. В Обозревателе решений щелкните проект правой кнопкой мыши и выберите пункты Добавить > Новый элемент.

5. В диалоговом окне Добавление нового элемента выберите Windows Form в области Шаблоны. В поле Имя введите имя формы Form2. Нажмите кнопку Открыть, чтобы добавить форму в проект.

Эта форма будет шаблоном для дочерних форм MDI.

Откроется Конструктор Windows Forms, отображающий окно формы Form2.

6. Перетащите элемент управления RichTextBox из Панели элементов в форму.

7. В окне Свойства задайте для свойства Anchor значение Сверху, слева, а для свойства Dock – значение Fill.

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

8. Дважды щелкните Новый элемент меню, чтобы создать для него обработчик события Click.

9. Вставьте код, аналогичный приведенному ниже, чтобы создать новую дочернюю форму MDI, когда пользователь щелкнет Новый элемент меню.

В примере ниже обработчик событий обрабатывает событие Click для MenuItem.

protected void MDIChildNew_Click(object sender, System.EventArgs e){ Form2 newMDIChild = new Form2(); // Устанавливаем текущую форму как родительскую для дочерней newMDIChild.MdiParent = this; // Отображаем новую форму newMDIChild.Show();}

10. В раскрывающемся списке в верхней части окна Свойства выберите полосу меню, соответствующую полосе меню Файл, и задайте для свойства MdiWindowListItem значение в окне ToolStripMenuItem.

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

11. Нажмите клавишу F5 для запуска приложения. Выбрав пункт Создать в меню Файл, можно создать дочерние MDI-формы, которые будут храниться в пункте меню окно.

 

Упорядочение дочерних MDI-форм

 

Во многих случаях приложения будут иметь команды меню для таких действий, как «Мозаика», «Каскад» и «Упорядочить», которые позволяют управлять расположением открытых дочерних MDI-форм. Для изменения порядка расположения дочерних форм в родительской MDI-форме можно использовать метод LayoutMdi с одним из значений перечисления MdiLayout.

Значения перечисления MdiLayout позволяют отображать дочерние формы:

· в виде каскада;

· мозаично по вертикали;

· мозаично по горизонтали;

· в виде значков форм, расположенных в нижней части MDI-формы.

Эти значения имеют тот же результат, что и команды Windows.

1. В методе для родительской MDI-формы используйте перечисление LayoutMdi для задания метода MdiLayout. В следующем примере используется значение перечисления MdiLayout.Cascade для дочерних окон родительской MDI-формы (Form1). Перечисление используется в коде во время обработчика событий для Click события элемента меню Cascade Windows.

protected void CascadeWindows_Click(object sender, System.EventArgs e){ this.LayoutMdi(System.Windows.Forms.MdiLayout.Cascade); }

 

Примечание

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

 

2. В случае использования Visual C# поместите следующий код в конструктор формы для регистрации обработчика событий.

this.button1.Click += new System.EventHandler(this.button1_Click);

 

 

Ответьте на контрольные вопросы (ответы пришлите преподавателю):

1. Что такое интерфейс SDI?

2. Что такое интерфейс MDI?

3. В каких случаях предпочтительнее использовать SDI-интерфейс, а в каких MDI?

4. Какое свойство позволяет сделать форму родительским MDI-окном?

5. Как программно указать, какая форма будет родительской для текущей дочерней формы?

6. Какой метод отвечает за упорядочение дочерних форм в окне главной формы?

7. В каком перечислении содержатся варианты упорядочивания дочерних форм в окне главной формы?

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: