Como: Criar formulários filho MDI

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ção:

As caixas de diálogo e comandos de menu demonstradas podem ser diferentes daqueles descritas na Ajuda, dependendo das configurações ativas ou configurações de edição.Para alterar as configurações, escolher Importar e exportar configurações on the Ferramentas menu.Para obter mais informações, consulte Configurações do Visual Studio.

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ção:

    O formulário filho MDI que você criar nessa etapa é um Formulário do Windows padrão.sistema autônomo tal, ele tem um Opacity propriedade, 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.

    The Designer de Formulários do Windows abre, exibindo Form2.

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

  6. Na janela Propriedades, defina a propriedade AnchorTop, Left e a propriedade DockFill.

    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ção:

    No exemplo a seguir, o manipulador de eventos trata o Click evento 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ção:

    Quando um formulário MDI filho tem uma MainMenu componente (com, geralmente, uma estrutura de menu dos itens de menu) e ele é aberto em um formulário pai MDI que tenha um MainMenu componente (com, geralmente, uma estrutura de menu dos itens de menu), o menu itens mesclará automaticamente se você tiver conjunto o MergeType propriedade (e, opcionalmente, o MergeOrder propriedade). 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 filhos MDI ativo

Como: Enviar dados para o Active MDI filho

Como: Organizar formulários filho MDI

Outros recursos

Aplicativos de Interface de Documentos Múltiplos (MDI)