Como: Criar formulários filho MDI
Os formulários filho MDI são um elemento essencial dos aplicativos MDI (Multiple-Document Interface), 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 exibe um RichTextBox controle, semelhante à maioria dos aplicativos de processamento de texto. Ao substituir o controle por outros controles, como o DataGridView controle, ou uma mistura de controles, você pode criar janelas filhas MDI (e, por extensão, aplicativos MDI) com diversas possibilidadesSystem.Windows.Forms.
Criar formulários filho MDI
Crie um novo projeto de aplicativo do Windows Forms no Visual Studio. Na janela Propriedades do formulário, defina sua propriedade como e sua IsMdiContainer
WindowsState
propriedade comotrue
Maximized
.Isso designa o formulário como um recipiente MDI para janelas filho.
Toolbox
No , arraste um MenuStrip controle para o formulário. Defina sua propriedadeText
para o Arquivo.Clique nas reticências (...) ao lado da propriedade Items e clique em Adicionar para adicionar dois itens de menu de faixa de ferramentas filho. Defina a propriedade
Text
para esses itens como Novo e Janela.No Gerenciador de Soluções, clique com o botão direito do mouse no projeto e selecione Adicionar>Novo Item.
Na caixa de diálogo Adicionar Novo Item, selecione Windows Form (no Visual Basic ou no Visual C#) ou Windows Forms Application (.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. Como tal, tem uma Opacity propriedade, que lhe permite controlar a transparência do formulário. No entanto, a Opacity propriedade 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.
Na Caixa de Ferramentas, arraste um controle RichTextBox para o formulário.
Na janela Propriedades, defina a propriedade
Anchor
como Superior, Esquerda e a propriedadeDock
como Preenchimento.Isso faz com que o controle preencha completamente a área do formulário filho MDI, mesmo quando o RichTextBox formulário é redimensionado.
Clique duas vezes no novo item de menu para criar um Click manipulador de eventos para ele.
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 Click evento para
MenuItem2
. Lembre-se de que, dependendo das especificidades da arquitetura de seu aplicativo, seu item de menu Novo não poderá serMenuItem2
.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 C++, adicione a seguinte
#include
diretiva na parte superior do Form1.h:#include "Form2.h"
Na lista suspensa na parte superior da janela Propriedades , selecione a faixa de menu que corresponde à faixa de menu Arquivo e defina a MdiWindowListItem propriedade como Janela ToolStripMenuItem.
Isso permite que o menu Janela mantenha uma lista de janelas filhas MDI abertas com uma marca de seleção ao lado da janela filho ativa.
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 (com, geralmente, uma estrutura de menu de itens de menu) e é aberto dentro de um formulário pai MDI que tem um MainMenuMainMenu componente (com, geralmente, uma estrutura de menu de itens de menu), os itens de menu serão mesclados automaticamente se você tiver definido a propriedade (e, opcionalmente, a MergeTypeMergeOrder propriedade). Defina a MergeType propriedade de ambos os MainMenu componentes e todos os itens de menu do formulário filho como MergeItems. Além disso, defina a MergeOrder propriedade para que os itens de menu de ambos os menus apareçam na ordem desejada. Além disso, lembre-se de que, quando você fecha um formulário pai MDI, cada um dos formulários filho MDI gera um Closing evento antes que o evento para o Closing pai MDI seja gerado. O cancelamento de um evento filho MDI Closing não impedirá que o evento do Closing pai MDI seja gerado, no entanto, o argumento para o CancelEventArgs evento do pai Closing MDI agora será definido como
true
. Você pode forçar o pai MDI e todos os formulários filho MDI a fechar definindo o CancelEventArgs argumento comofalse
.
Confira também
.NET Desktop feedback