Como criar os formulários MDI filho
Os formulários filho MDI são um elemento essencial das aplicações de Interface MDI Multiple-Document, pois são o núcleo da interação com o utilizador.
No procedimento a seguir, você usará o Visual Studio para criar um formulário filho MDI que exibe um controle RichTextBox, semelhante à maioria dos aplicativos de processamento de texto. Ao substituir 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 MDI filhos
Crie um novo projeto de aplicativo do Windows Forms no Visual Studio. Na janela Propriedades do formulário, defina a sua propriedade IsMdiContainer como
true
e a sua propriedadeWindowsState
comoMaximized
.Isso designa o formulário como um contentor MDI para janelas secundárias.
A partir do
Toolbox
, arraste um controlo MenuStrip para o formulário. Defina sua propriedadeText
como File.Clique nas reticências (...) ao lado da propriedade Items e clique em Adicionar para adicionar dois itens de menu filho da faixa de ferramentas. Defina a propriedade
Text
para esses itens como Nova 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 Formulário Windows (no Visual Basic ou no Visual C#) ou Aplicação Windows Forms (.NET) (no Visual C++) no painel Modelos. Na caixa Nome, nomeie o formulário Form2. Selecione Abrir para adicionar o formulário ao projeto.
Observação
O formulário filho MDI criado nesta etapa é um Formulário do Windows padrão. Como tal, tem uma propriedade Opacity, que lhe permite controlar a transparência do formulário. No entanto, a propriedade Opacity foi projetada para janelas de nível superior. Não o use com formulários filho MDI, pois podem ocorrer problemas de pintura.
Este formulário será o modelo para os seus formulários filho MDI.
O Windows Forms Designer é aberto, exibindo Form2.
Na Caixa de Ferramentas, arraste um RichTextBox control para o formulário.
Na janela Propriedades, defina a propriedade
Anchor
como Top, Left e a propriedadeDock
como Fill.Isso faz com que o controle RichTextBox preencha completamente a área do formulário filho MDI, mesmo quando o formulário é redimensionado.
Clique duas vezes no item de menu Novo para criar um manipulador de eventos Click para ele.
Insira um código semelhante ao seguinte para criar um novo formulário filho MDI quando o utilizador selecionar o 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 da sua aplicação, o item de menu Novopode não estar . 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 diretiva
#include
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 propriedade MdiWindowListItem para a 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 filha ativa.
Pressione F5 para executar o aplicativo. Ao selecionar Novo no menu Arquivo, pode criar novos formulários filho MDI, que são mantidos sob controlo no item de menu Janela.
Observação
Quando um formulário filho MDI possui um componente MainMenu (geralmente com uma estrutura de menu) e é aberto dentro de um formulário pai MDI que possui um componente MainMenu (geralmente com uma estrutura de menu), os itens de menu serão mesclados automaticamente se a propriedade MergeType estiver 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, lembre-se de que, ao fechar um formulário MDI principal, cada formulário MDI secundário gera um evento Closing antes que o evento Closing para o MDI principal seja gerado. Cancelar o evento de Closing de uma criança MDI não impedirá que o evento Closing do pai MDI seja gerado; no entanto, o argumento CancelEventArgs para o evento de Closing do pai MDI agora será definido como
true
. Você pode forçar o MDI pai e todos os formulários filho MDI a fechar ao definir o argumento CancelEventArgs comofalse
.
Ver também
- Aplicações de Interface (MDI) Multiple-Document
- ** Como Criar Formulários MDI Pai
- Como determinar o filho MDI ativo
- Como: Enviar dados para o filho MDI ativo
- Como: Organizar formulários filho MDI
.NET Desktop feedback