Поделиться через


Как создать дочерние формы MDI

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

В следующей процедуре вы будете использовать Visual Studio для создания дочерней формы MDI, которая отображает элемент управления RichTextBox, аналогичный большинству приложений для word-обработки. Заменив элемент управления System.Windows.Forms другими элементами управления, такими как элемент управления DataGridView или сочетание элементов управления, можно создавать дочерние окна MDI (и, в расширениях, приложения MDI) различными возможностями.

Создайте дочерние формы MDI

  1. Создайте проект приложения Windows Forms в Visual Studio. В окне свойств формы задайте для свойства значение и его свойству .

    Эта форма указывает на MDI-контейнер для дочерних окон.

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

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

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

  5. В диалоговом окне Добавление нового элемента выберите Windows Form (в Visual Basic или Visual C#) или Windows Forms Application (.NET) (в Visual C++) в области Шаблоны. В поле Имя укажите для формы имя Form2. Выберите Открыть, чтобы добавить форму в проект.

    Замечание

    Дочерняя форма MDI, созданная на этом шаге, является стандартной формой Windows Form. Таким образом, он имеет свойство Opacity, которое позволяет управлять прозрачностью формы. Однако свойство Opacity было разработано для окон верхнего уровня. Не используйте его с дочерними формами MDI, так как проблемы с рисованием могут возникнуть.

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

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

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

  7. В окне свойств задайте для свойства Anchor значение Top, Left и для свойства Dock значение Fill.

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

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

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

    Замечание

    В следующем примере обработчик событий обрабатывает событие 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();
       }
    

    В C++добавьте следующую директиву #include в верхней части Form1.h:

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

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

  11. Нажмите клавишу 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 и все дочерние формы MDI, установив значение CancelEventArgsдля аргумента false.

См. также