Inquiridor
Formulários MDI

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
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.
-
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
-
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
-
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
-
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
-