Visual – MdiClient – ChildForm – Multiple Document Interface – C#

Publicado: 2 de maio de 2014 em C#

Em interface gráfica do usuário (GUI), uma interface de documentos múltiplos, ou MDI, acrônimo para Multiple Document Interface é um método de organização de aplicações gráficas em janelas que residem em uma única janela, a janela principal da aplicação. A única exceção são possíveis janelas modais da aplicação.

Com múltiplas interfaces de documentos, uma única barra de menu e / ou barra de ferramentas é compartilhado entre todas as janelas filho, reduzindo a desordem e uma utilização mais eficiente do espaço na tela. As janelas filho de um aplicativo pode ser ocultada / mostrada / minimizada / maximizada como um todo. Os autores de aplicações multi-plataforma podem fornecer a seus usuários um comportamento consistente da aplicação entre plataformas.

Interface de Múltiplos Documentos

Interface de Múltiplos Documentos

MdiClient

Representa o recipiente para uma interface de documentos múltiplos (MDI) formulários filho. Você definir se um formulário será um container para múltiplos documentos através da propriedade Form.IsMdiContainer.

Form Child

Você pode definir um formulário como filho o atribuindo a um formulário pai através da propriedade MdiParent, que 0btém ou define uma interface de documentos múltiplos.

Exemplo:

Neste exemplo criamos um formulário MDI básico e um menu. Ressaltando que usamos o Design Time do Visual Studio somente para criar os formulários por opção, o código é inserido parte no construtor da classe do formulário e parte no evento OnShown do Form. Você pode criar tudo dinamicamente ou tudo em Design Time. Vale brincar com o construtor e os eventos dos formulários, porque apesar de alguns eventos possuírem funcionalidades parecidas, não são iguais e existem diferenças peculiares entre eles.

Para criar o segundo formulário, clique com o botão direito em cima do seu projeto na janela Solution Explorer e clique em Add e em Windows Form.

C#

Formulario – Pai

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace formularioMdi
{
    public partial class Form1 : Form
    {
        // Declara componentes
        MenuStrip menu;

        public Form1()
        {
            // Inicializa formulario       
            
            // Define formulario como pai.
            this.IsMdiContainer = true;
                        
            // Cria painel para formularios filhos
            ToolStripPanel painel = new ToolStripPanel();

            // Define tamanho do painel
            painel.Dock = DockStyle.Fill;

            // Cria barra do menu
            menu = new MenuStrip();

            // Cria menu
            ToolStripMenuItem itens1 = new ToolStripMenuItem("Formularios");

            // Cria itens do menu
            ToolStripMenuItem m1item1 = new ToolStripMenuItem("Novo", null, new EventHandler(clique1_m1));
            ToolStripMenuItem m1item2 = new ToolStripMenuItem("Sair", null, new EventHandler(clique2_m1));

            // Adiciona itens ao menu e menu a barra de menu
            itens1.DropDownItems.Add(m1item1);
            itens1.DropDownItems.Add(m1item2);
            menu.Items.Add(itens1);            

            InitializeComponent();
        }

        private void Form1_Shown(object sender, EventArgs e)
        {
            // Define texto 
            this.Text = "Desenvolvimento Aberto - Formulario - Main Form / Child Form";

            // Define tamanho e posição do formulario principal            
            this.Top = 0;
            this.Left = 0;
            this.Width = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width - 50;
            this.Height = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height - 50;
           
            // Adiciona menu ao formulario
            this.Controls.Add(menu);

        }

        private void clique1_m1(object sender, EventArgs e)
        {
            // Chama instancia do formulario filho
            FormularioFilho formularioFilho = new FormularioFilho();
            formularioFilho.MdiParent = this;
            
            // Usa metodo estatico para exibir numero da instancia
            formularioFilho.Text = "Formulario Filho - Instancia:" + this.MdiChildren.Length.ToString();

            // Chama formulario
            formularioFilho.Show();
        }

        private void clique2_m1(object sender, EventArgs e)
        {
            // Fecha formulario
            this.Close();
        }

    }
}

Formulario – Filho

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace formularioMdi
{
    public partial class FormularioFilho : Form
    {
        // Declara componentes
        Label rotulo;
        TextBox campo;
        Button botao;

        public FormularioFilho()
        {
            InitializeComponent();
        }

        private void FormularioChild_Shown(object sender, EventArgs e)
        {
            // Define tamanho do formulario
            this.Size = new Size(360, 150);

            // Cria componentes
            rotulo = new Label();
            campo = new TextBox();
            botao = new Button();

            // Defie tamanho
            rotulo.Size = new Size(200, 20);
            campo.Size = new Size(300, 20);

            // Define posição
            rotulo.Location = new Point(12, 20);
            campo.Location = new Point(12, 40);
            botao.Location = new Point(12, 70);

            // Define texto
            rotulo.Text = "Digite seu nome:";
            botao.Text = "Ok";

            // Adiciona componentes ao fomrulario
            this.Controls.Add(rotulo);
            this.Controls.Add(campo);
            this.Controls.Add(botao);

        }
    }
}

 

 

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s