Практическое руководство. Создание дочерних форм MDI
Дочерние формы MDI являются важным элементом приложений многодокументного интерфейса (MDI), как эти находятся в центре взаимодействия с пользователем.
С помощью описанной ниже процедуры создаются дочерние формы MDI, отображающие элемент управления RichTextBox аналогично большинству текстовых приложений. Замена элемента управления System.Windows.Forms на другие элементы управления, такие как DataGridView, или на сочетание элементов управления позволяет создавать дочерние окна MDI (а также приложения MDI) с различными возможностями.
Note
Отображаемые диалоговые окна и команды меню могут отличаться от описанных в справке в зависимости от текущих параметров или выпуска. Чтобы изменить параметры, выберите в меню Сервис пункт Импорт и экспорт параметров . Дополнительные сведения см. в разделе Персонализация интегрированной среды разработки Visual Studio.
Создание дочерних форм MDI
Создайте проект Windows Forms. В Windows свойства формы, задать его IsMdiContainer свойства
true
и егоWindowsState
свойстваMaximized
.При этом форма назначается в качестве MDI-контейнера для дочерних окон.
Из
Toolbox
перетащите элемент управления MenuStrip в форму. Задайте егоText
свойства файл.Нажмите кнопку с многоточием (...) рядом с полем элементы свойство и нажмите кнопку добавить добавить два пункта меню дочерние средство ленты. Задайте
Text
свойства этих элементов значения New и окно.В обозревателе решений, щелкните правой кнопкой мыши проект, выберите пункт добавить, а затем выберите Добавление нового элемента.
В Добавление нового элемента выберите формы Windows (в Visual Basic или Visual C#) или приложение Windows Forms (.NET) (в Visual C++) из Шаблоны области. В имя окне имя формы Form2. Нажмите кнопку откройте кнопку, чтобы добавить форму в проект.
Note
Дочерняя форма MDI, созданная на этом этапе, является стандартной формой Windows Forms. Таким образом, у нее есть свойство Opacity, которое позволяет управлять прозрачностью формы. Однако свойство Opacity предназначено для окон верхнего уровня. Его не следует использовать в дочерних формах MDI, иначе могут возникнуть проблемы с рисованием.
Эта форма будет шаблоном для дочерних форм MDI.
Конструктор Windows Forms откроется, отображение Form2.
Из элементов, перетащите RichTextBox на форму элемент управления.
В свойства окне
Anchor
свойства верхней, левой иDock
свойства заполнения.В результате элемент управления RichTextBox будет целиком заполнять область дочерней формы MDI, даже если ее размеры изменятся.
Дважды щелкните New пункт меню, чтобы создать Click для него обработчик событий.
Вставьте код, аналогичный приведенному ниже, чтобы создать новую дочернюю форму MDI, когда пользователь щелкает New пункта меню.
Note
В примере ниже обработчик событий обрабатывает событие Click для
MenuItem2
. Имейте в виду, что в зависимости от особенностей архитектуры приложения, ваш New пункт меню может бытьMenuItem2
.Protected Sub MDIChildNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click Dim NewMDIChild As New Form2() 'Set the Parent Form of the Child window. NewMDIChild.MdiParent = Me 'Display the new form. NewMDIChild.Show() End Sub
protected void MDIChildNew_Click(object sender, System.EventArgs e){ Form2 newMDIChild = new Form2(); // Set the Parent Form of the Child window. newMDIChild.MdiParent = this; // Display the new form. newMDIChild.Show(); }
private: void menuItem2_Click(System::Object ^ sender, System::EventArgs ^ e) { Form2^ newMDIChild = gcnew Form2(); // Set the Parent Form of the Child window. newMDIChild->MdiParent = this; // Display the new form. newMDIChild->Show(); }
При использовании Visual C++ добавьте следующую директиву
#include
в начало формы Form1.h:#include "Form2.h"
В раскрывающемся списке в верхней части свойства окно, выберите пункт меню, соответствующий файл меню и набор MdiWindowListItem свойство в окно ToolStripMenuItem.
Это позволит окно меню, чтобы поддерживать список открытых дочерних окон MDI с флажком рядом с активным окном.
Нажмите клавишу F5 для запуска приложения. Выбрав New из файл меню, можно создать дочерние формы MDI, которыми будут храниться в окно пункта меню.
Note
Когда в дочерней форме MDI есть компонент MainMenu (обычно обладающий структурой пунктов меню) и он открыт внутри родительской формы MDI, также имеющей компонент MainMenu (обычно обладающий структурой пунктов меню), пункты меню будут объединены автоматически, если задано свойство MergeType (и, возможно, свойство MergeOrder). Установите для свойства MergeType обоих компонентов MainMenu и всех пунктов меню дочерней формы значение MergeItems. Кроме того, установите свойство MergeOrder таким образом, чтобы пункты обоих меню приводились в нужном порядке. Необходимо помнить, что при закрытии родительской формы MDI каждая из дочерних форм MDI создает событие Closing до создания события Closing для родительской формы MDI. Отмена события Closing дочерней формы MDI не отменяет событие Closing родительской формы MDI. Однако для аргумента CancelEventArgs для события Closing родительской формы MDI будет установлено значение
true
. Чтобы принудительно закрыть родительскую и все дочерние формы MDI, задайте для аргумента CancelEventArgs значениеfalse
.