Compartilhar via


Como criar os formulários filho MDI

Os formulários filho MDI são um elemento essencial dos aplicativos de Interface MDI, pois esses formulários são o centro da interação do usuário.

No procedimento a seguir, você usará o Visual Studio para criar um formulário filho MDI que irá exibir um controle RichTextBox, semelhante à maioria dos aplicativos de processamento de texto. Substituindo o controle System.Windows.Forms por outros controles, como o controle DataGridView ou uma mistura de controles, você pode criar janelas filho MDI (e, por extensão, aplicativos MDI) com diversas possibilidades.

Criar formulários filho MDI

  1. Crie um novo projeto de aplicativo do Windows Forms no Visual Studio. Na janela Propriedades para o formulário, defina a respectiva propriedade IsMdiContainer como true e a respectiva propriedade WindowsState como Maximized.

    Isso designa o formulário como um recipiente MDI para janelas filho.

  2. No Toolbox, arraste um controle MenuStrip para o formulário. Defina a propriedade Text dele como Arquivo.

  3. Clique nas reticências (...) ao lado da propriedade Itens e clique em Adicionar para adicionar dois subitens de menu de barra de ferramentas. Defina a propriedade Text para esses itens como Novo e Janela.

  4. No Gerenciador de Soluções, clique com o botão direito do mouse no projeto e selecione Adicionar>Novo Item.

  5. Na caixa de diálogo Adicionar Novo Item, selecione Formulário do Windows (no Visual Basic ou no Visual C#) ou Aplicativo Windows Forms (.NET) (no Visual C++) no painel Modelos. Na caixa Nome, dê o nome Form2 ao formulário. Selecione Abrir para adicionar o formulário ao projeto.

    Observação

    O formulário MDI filho criado nesta etapa é um formulário padrão do Windows. Dessa forma, ele tem uma propriedade Opacity, que permite controlar a transparência do formulário. No entanto, a propriedade Opacity foi projetada para janelas de nível superior. Não use-a com formulários filho MDI, pois podem ocorrer problemas de pintura.

    Este formulário será o modelo para seus formulários filho MDI.

    O Designer de Formulários do Windows é aberto, exibindo Form2.

  6. Da caixa de ferramentas , arraste um controle RichTextBox para o formulário.

  7. Na janela Propriedades, defina a propriedade Anchor como Superior, Esquerda e a propriedade Dock como Preenchimento.

    Isso faz com que o controle RichTextBox preencha completamente a área do formulário filho MDI, mesmo quando o formulário é redimensionado.

  8. Clique duas vezes no item de menu Novo para criar um manipulador de eventos Click para ele.

  9. Insira um código semelhante ao seguinte para criar um novo formulário filho MDI quando o usuário clicar no item de menu Novo.

    Observação

    No exemplo a seguir, o manipulador de eventos manipula o evento Click para MenuItem2. Lembre-se de que, dependendo das especificidades da arquitetura do aplicativo, o item de menu Novo pode não ser 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();
       }
    

    No C++, adicione a seguinte diretiva #include na parte superior do Form1.h:

    #include "Form2.h"
    
  10. Na lista suspensa na parte superior da janela Propriedades, selecione a barra de menu que corresponde à barra de menu Arquivo e defina a propriedade MdiWindowListItem para a janela ToolStripMenuItem.

    Isso permite que o menu Janela mantenha uma lista de janelas filho MDI abertas com uma marca de seleção próxima à janela filho ativa.

  11. Pressione F5 para executar o aplicativo. Ao selecionar Novo do menu Arquivo, você pode criar novos formulários filho MDI, que são mantidos no item de menu Janela.

    Observação

    Quando um formulário filho MDI tem um componente MainMenu (geralmente com uma estrutura de menu) e é aberto dentro de um formulário pai MDI que tem um componente MainMenu (geralmente com uma estrutura de menu), os itens de menu são mesclados automaticamente se a propriedade MergeType está definida (e, opcionalmente, a propriedade MergeOrder). Defina a propriedade MergeType de ambos os componentes MainMenu e de todos os itens de menu do formulário filho para MergeItems. Além disso, defina a propriedade MergeOrder para que os itens de menu de ambos os menus apareçam na ordem desejada. Além disso, tenha em mente que, quando você fecha um formulário pai MDI, cada um dos formulários filho MDI gera um evento Closing antes do evento Closing do pai MDI ser gerado. Cancelar o evento Closing de um filho MDI não impedirá que o evento Closing do pai MDI seja gerado; no entanto, o argumento CancelEventArgs para o evento Closing do pai MDI agora será definido como true. Você pode forçar encerramento do pai MDI e de todos os formulários filho MDI configurando o argumento CancelEventArgs como false.

Consulte também