Практическое руководство. Создание дочерних MDI-форм
Обновлен: Ноябрь 2007
Дочерние MDI-формы являются основным элементом Приложения с интерфейсом MDI, поскольку они находятся в центре взаимодействия с пользователями.
Посредством следующей процедуры создаются дочерние MDI-формы, отображающие элемент управления RichTextBox, аналогично большинству текстовых приложений. Замена элемента управления DataGridView на другие элементы управления, такие как System.Windows.Forms, или на композицию элементов управления, позволяет создавать дочерние MDI-окна (а также MDI-приложения) с различными возможностями.
Примечание. |
---|
Отображаемые диалоговые окна и команды меню могут отличаться от описанных в справке в зависимости от текущих настроек или версии среды. Чтобы изменить настройки, в менюСервис выберите команду Импорт и экспорт параметров. Дополнительные сведения см. в разделе Параметры Visual Studio. |
Чтобы создать дочерние MDI-формы, выполните следующие действия.
Создайте родительскую MDI-форму, структура меню которой содержит пункты меню верхнего уровня Файл и Окно и пункты меню Создать и Закрыть. Дополнительные сведения о создании родительских MDI-форм см. в разделе Практическое руководство. Создание родительских MDI-форм.
Из раскрывающегося списка в верхней части окна Свойства выберите пункт меню, соответствующий пункту меню &Окно, и задайте свойству MdiList значение true.
Это позволит меню Окно поддерживать список открытых дочерних MDI-окон с галочкой рядом с активным дочерним окном.
В Обозревателе решений щелкните правой кнопкой мыши проект, выберите команду Добавить, затем Добавить новый элемент.
Эта форма будет шаблоном для создаваемой дочерней MDI-формы.
Примечание. Дочерняя MDI-форма, создаваемая на этом этапе, является стандартной формой Windows Forms. В этом качестве у нее есть свойство Opacity, позволяющее управлять прозрачностью формы. Однако свойство Opacity разработано для окон верхнего уровня. Его не следует использовать в дочерних MDI-формах, иначе могут возникнуть проблемы с рисованием.
В диалоговом окне Добавить новый элемент выберите Форма Windows Forms (в Visual Basic или в Visual C#) или Приложение Windows Forms (.NET) (в Visual C++) из области Шаблоны. В поле Имя введите имя формы Form2. Нажмите кнопку Открыть, чтобы добавить форму в проект.
Откроется конструктор Windows Forms, отображающий форму Form2.
Из панели элементов перетащите элемент управления RichTextbox на форму.
В окне Свойства задайте для свойства Anchor значение Top, Left, а для свойства Dock значение Fill.
Это приведет к тому, что элемент управления RichTextBox целиком заполнит область дочерней MDI-формы, даже если размеры формы изменены.
Создайте обработчик событий Click для элемента меню Создать. Сведения о создании обработчиков событий см. в разделе Руководство: создание обработчика событий с помощью конструктора.
Вставьте код, аналогичный следующему, чтобы создать новую дочернюю MDI-форму при нажатии пользователем пункта меню Создать.
Примечание. В следующем примере обработчик событий обрабатывает событие Click для MenuItem2. Следует помнить, что, в зависимости от особенностей архитектуры приложения, созданный пункт меню Создать может не являться 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"
Нажмите клавишу F5 для запуска приложения. Обратите внимание, что при выборе команды Создать в меню Файл можно создавать новые дочерние MDI-формы, управление которыми осуществляется в меню Окно.
Примечание. Следует помнить, что когда в дочерней 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.
См. также
Задачи
Практическое руководство. Создание родительских MDI-форм
Практическое руководство. Определение активной дочерней MDI-формы
Практическое руководство. Отправка данных в активную дочернюю MDI-форму
Практическое руководство. Упорядочение дочерних форм интерфейса MDI