none
Formulários MDI RRS feed

  • Discussão Geral

  • O projeto em que estou trabalhando é aberto por um form Login. Após entrar, é aberto um form MDI principal que fornece acesso a outros MDIs, cada MDI representa um grupo de assunto (unidades, financeiro, pessoal,....)

    Como faço para que ao abrir um MDI o principal seja fechado? E ao fechar um MDI "assunto", abra o MDI principal?


    Sergio Ivanenko

    • Tipo Alterado Marcos SJ quinta-feira, 21 de janeiro de 2016 13:39 Todas as threads de "How to" serão modificadas para discussão geral
    quinta-feira, 21 de janeiro de 2016 12:59

Todas as Respostas

  • Ivanenko, esse seu grupo de assuntos, não poderia ser um menu ? dai teus forms abririam dentro do form principal, a vantagem é que caso o usuário abra um form do grupo financeiro e queira abrir um form do grupo pessoal, não precise fechar o form financeiro que já esta aberto. 

    Att, wsti.

    quinta-feira, 21 de janeiro de 2016 14:04
  • Só vai dar certo se o formulário que você chamar não for filho do que está em execução, ou seja, não seja MdiParent do que está chamando:

    Exemplo:

    Private Sub Form1ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles Form1ToolStripMenuItem.Click
    	Dim f = New Form1()	
    	Me.Visible = False
    	f.ShowDialog()
    	Me.Visible = True
    End Sub
    O método Form1ToolStripMenuItem_Click é do MDIPrincipal e ele chama um Form1 que não é seu filho e ai funciona. O Form1 pode até ser um MDIForm, mas, ele nunca pode ser filho do principal !!! Sempre chamar também ShowDialog() para travar a tela que está sendo executada!


    Fulvio C

    quinta-feira, 21 de janeiro de 2016 14:25
  • WSTI.

    Esta seria uma maneira de resolver, porém gostaria de saber se é possível fazer o que eu quero.

    Trata-se de um aplicativo para um Condomínio horizontal em área rural, onde os grupos de acessos serão: Portaria, Síndico, Comissão Gestora e Conselho Fiscal, onde o grupo Portaria somente terá acesso às listas de condôminos, cadastro de visitantes e prestadores de serviço. Os demais, terão acesso a tudo,porém conforme a permissão do grupo.

    Acredito que formulários MDI é mais prático para elaboração dos "menus", pois com um só, ficaria muito grande.

    Posso também, criar os formulários MDI com menus apropriados a cada grupo de usuários e abrir após o login, o MDI de acordo com o grupo do usuário.

    Mas repito, gostaria de saber como faço para que ao abrir um "MDI-2", o MDI principal (MDI-1) seja fechado, retornando a ele, quando fechar um "MDI-2".


    Sergio Ivanenko

    quinta-feira, 21 de janeiro de 2016 14:44
  • tente assim:

    para abrir o segundo mdi:

            Form2.Show()
            Me.Hide()

    e no evento FormClosed do Form2 coloque:

        Private Sub Form2_FormClosed(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed
    
            Form1.Show()
    
        End Sub

    Isso porque você não pode fechar o MDI principal pois ele é que determina se a aplicação está aberta ou não, então você esconde ele enquanto outro MDI estará sendo exibido na tela.

    Abraço!


    Natan

    quinta-feira, 21 de janeiro de 2016 16:44
  • Problema: "Mas repito, gostaria de saber como faço para que ao abrir um "MDI-2", o MDI principal (MDI-1) seja fechado, retornando a ele, quando fechar um "MDI-2"."

    Se você fechar (close()) o MDI principal vai fechar todo o programa, sendo tudo o mesmo executavel

    Você pode dar um visible = false e visible = true somente !!! da maneira mesmo que eu expliquei. Porque eu até consigo abrir um outro executavel, mas, o mesmo precisaria ter permissão e ai não compartilha do mesmo item de memória, e permissões contidas no primeiro executável!

    Perceba que até a outra resposta é bem parecida com isso... Ou seja, com o tipo de solução que você proponha não tem solução!


    Fulvio C

    quinta-feira, 21 de janeiro de 2016 17:48
  • OK!

    Obrigado pelas orientações.


    Sergio Ivanenko

    quinta-feira, 21 de janeiro de 2016 21:14