Como: Criar formulários filho MDI

Observação importanteImportante

Este tópico usa a MainMenu controle, que foi substituído pelo MenuStrip de controle. O MainMenu controle é mantido para compatibilidade com versões anteriores e o uso futuro, se você escolher. Para obter informações sobre como criar um MDI pai formulário usando um MenuStrip, consulte Como: Criar uma lista de janelas MDI com MenuStrip (Windows Forms).

Formulários Filhos MDI são um elemento essencial da Aplicativos de Interface de Documentos Múltiplos (MDI), pois esses formulários são o centro da interação com o usuário.

No procedimento a seguir, você criará formulários filhos MDI que exibem um controle RichTextBox, semelhante à maioria dos aplicativos de processamento de texto. Substituir o controle System.Windows.Forms por outros controles, como o controle DataGridView, ou uma mistura de controles permite que você crie janelas filho MDI (e, por extensão, Aplicativos MDI) com diversas possibilidades.

ObservaçãoObservação

As caixas de diálogo e comandos de menu demonstradas podem ser diferentes daqueles descritos na Ajuda, dependendo das configurações ativas ou configurações de edição. Para alterar as configurações, escolha Import and Export Settings sobre o Ferramentas menu. Para obter mais informações, consulte Trabalhando com configurações.

Para criar formulários filhos MDI

  1. Crie um formulário pai MDI que tenha uma estrutura de menu contendo os itens de menu de nível superior Arquivo e Janela e os itens de menu Novo e Fechar. Para obter mais informações sobre como criar formulários pai MDI, consulte Como: Criar formulários-pai MDI.

  2. Na lista suspensa na parte superior da janela de Properties, selecione o item de menu que corresponde ao item de menu o &Window e defina a propriedade MdiList como true .

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

  3. No Gerenciador de Soluções , clique com o botão direito do mouse no projeto, aponte para Adicionar e em seguida, selecione Adicionar Novo Item .

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

    ObservaçãoObservação

    O formulário filho MDI que você criar nessa etapa é um Formulário do Windows padrão. Como tal, ele tem uma propriedade Opacity, que permite que você controle a transparência do formulário. No entanto, a propriedade Opacity foi projetada para janelas de nível superior. Não a use ele formulários filhos MDI, pois podem ocorrer problemas de pintura.

  4. Na caixa de diálogo Adicionar Novo Item, selecione Formulário do Windows (em Visual Basic ou em Visual C#) ou Aplicativo de Formulários do Windows (.NET) (em Visual C++) do painel de Modelos. No nome caixa, nomeie o formulário Form2. Clique no botão Abrir para adicionar o formulário ao projeto.

    O Windows Forms Designer abre, exibindo Form2.

  5. Da Caixa de Ferramentas, arraste um controle RichTextBox para o formulário.

  6. Na janela Propriedades, defina a propriedade Anchor Top, Left e a propriedade Dock Fill.

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

  7. Crie um manipulador de eventos Click para item de menu de Novo. Para obter mais informações sobre manipuladores de evento, consulte Como: Criar manipuladores de eventos usando o Designer.

  8. Inserir código semelhante ao seguinte para criar um novo formulário filho MDI quando o usuário clica a item de menu Novo.

    ObservaçãoObservação

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

    Em Visual C++, adicione a seguinte diretiva #include na parte superior da Form1.h:

    #include "Form2.h"
    
  9. Pressione F5 para executar o aplicativo. Selecionando o menu Novo,do menu Arquivo você pode criar novos formulários filhos MDI, os quais são rastreados no menu Janela.

    ObservaçãoObservação

    Quando um formulário filho MDI tem um componente MainMenu (geralmente, com uma estrutura de menu de itens de menu) e ele é aberto em um formulário pai MDI que tem um componente MainMenu (geralmente, com uma estrutura de menu de itens de menu), os itens de menu irão mesclar automaticamente se você tiver definido a propriedade MergeType (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, todos os formulários filhos MDI geram um evento Closing antes que o evento Closing do pai MDI seja 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 do evento Closing do pai MDI agora será definido como true. Você pode forçar o pai MDI e o todos os filhos MDI a definindo o argumento CancelEventArgs para false.

Consulte também

Tarefas

Como: Criar formulários-pai MDI

Como: Determinar o filho MDI ativo

Como: Enviar dados para o filho MDI ativo

Como: Organizar formulários filho MDI

Outros recursos

Aplicativos de Interface de Documentos Múltiplos (MDI)