FECHAR FORM
Boa noite
Como fechar um form aberto em showdialog e fechar também o form que o requisitou.
Parece simples, mas vejam o problema. O form aberto em showdialog e um form de permissão aonde o usuário tem que digitar sua senha para ter acesso.
Esse form de permissão é usado por vários forms para que o usuário tenha acesso.
Gostaria que ao cancelar uma requisição de acesso fechasse o form de permissão e apenas o form que o requisitou por último.
Um abraço a todos, aguardo, se possÃvel, ajuda.
Como fechar um form aberto em showdialog e fechar também o form que o requisitou.
Parece simples, mas vejam o problema. O form aberto em showdialog e um form de permissão aonde o usuário tem que digitar sua senha para ter acesso.
Esse form de permissão é usado por vários forms para que o usuário tenha acesso.
Gostaria que ao cancelar uma requisição de acesso fechasse o form de permissão e apenas o form que o requisitou por último.
Um abraço a todos, aguardo, se possÃvel, ajuda.
Pelo o que entendi, assim que o usuario digita a senha e abri uma nova form, você digita frmFormanterior.Close no load da form que foi aberta.
exemplo
Form1 (é o da senha)
Private Sub Form2_load (...) ...
Form1.Close
End Sub
Qualquer coisa se der erro tenho uma segunda opção também. Usada muito para Login.
exemplo
Form1 (é o da senha)
Private Sub Form2_load (...) ...
Form1.Close
End Sub
Qualquer coisa se der erro tenho uma segunda opção também. Usada muito para Login.
Bom dia MOUSER
O usuário digita a senha, abre o form requisitado e fecha o form permissão através de Me.close no botão OK do form permissão.
Até ai tudo funciona perfeitamente, sem surpresas, o usuário possuindo a senha pode abrir qualquer form de acesso restrito.
O problema ocorre quando o usuário canceta a requisição para abrir um form de acesso restrito.
O form permissão pode abrir vários forms de acesso restrito. Como fechar apenas o form de acesso restrito que chamou por último o form permissão.
Requisito o form de acesso restrito com o seguinte código>
form de acesso restrito com SHOW
form permissão com SHOWDIALOG
Poderia fechar os forms com o seguinte código no botão cancelar.
If Application.OpenForms.OfType(Of frmManutencaoEstoque).Count() > 0 Then
frmManutencaoEstoque.Close()
End if.
Me.Close
Funciona, se abrisse apenas um form com o form permissão. Mas o form permissão pode abrir vários forms de acesso restrito. Ai voltamos a pergunta:
Como fechar último form a requisitar acesso através do botão cancelar do form permissão.
O usuário digita a senha, abre o form requisitado e fecha o form permissão através de Me.close no botão OK do form permissão.
Até ai tudo funciona perfeitamente, sem surpresas, o usuário possuindo a senha pode abrir qualquer form de acesso restrito.
O problema ocorre quando o usuário canceta a requisição para abrir um form de acesso restrito.
O form permissão pode abrir vários forms de acesso restrito. Como fechar apenas o form de acesso restrito que chamou por último o form permissão.
Requisito o form de acesso restrito com o seguinte código>
form de acesso restrito com SHOW
form permissão com SHOWDIALOG
Poderia fechar os forms com o seguinte código no botão cancelar.
If Application.OpenForms.OfType(Of frmManutencaoEstoque).Count() > 0 Then
frmManutencaoEstoque.Close()
End if.
Me.Close
Funciona, se abrisse apenas um form com o form permissão. Mas o form permissão pode abrir vários forms de acesso restrito. Ai voltamos a pergunta:
Como fechar último form a requisitar acesso através do botão cancelar do form permissão.
a tela q vai abrir a da senha
a tela da senha e o botão cancelar
Dim telanova As New Form5 [ô]nome da tela a abrir
telanova.tela = Me [ô]uma variável publica
telanova.ShowDialog() [ô]abre modal
a tela da senha e o botão cancelar
Public tela As Form [ô]a variável publica
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
tela.Dispose() [ô]fechando a tela q chamou a abertura
Me.Dispose() [ô]fechando a tela modal
End Sub
Boa tarde NICKOSOFT
Me desculpe, me expressei erroneamente.
Todos os formulários são acessados através de botões no form Principal.
Seu código funciona, só que como falei que gostaria que ao clicar em cancelar fechasse o form que requisitou a chamada e todos os forms são acessados através do form principal o aplicativo e fechado.
Ao clicar no botão cancela, gostaria que fechasse o form permissão e também o form que estava sendo requisitado e não o form Principal que hospeda os botões de acesso.
Espero que tenha conseguido me colocar melhor e assim possa contar com sua ajuda.
Me desculpe, me expressei erroneamente.
Todos os formulários são acessados através de botões no form Principal.
Seu código funciona, só que como falei que gostaria que ao clicar em cancelar fechasse o form que requisitou a chamada e todos os forms são acessados através do form principal o aplicativo e fechado.
Ao clicar no botão cancela, gostaria que fechasse o form permissão e também o form que estava sendo requisitado e não o form Principal que hospeda os botões de acesso.
Espero que tenha conseguido me colocar melhor e assim possa contar com sua ajuda.
Mas se vc nao abre o form requisitado ate q a senha esteja certa ele nem existiria no cancelar, nao entendo pq tem q criar o form e aguardar a senha, e ai se nao tiver, destruir tela de permissao e uma tela requisitada sem qq utilidade
Acho que você pode usar o Evento.Close, nos Form que você quer fechar, ainda não vejo problema que você ta criando, acho que ta muito simples de resolver.
Por Exemplo:
Form Principal - Cadastro de Medicamento - Bulário em .ShowDialog()
Dai Usei um Botão de Fechar. e Coloquei
Frm_cad_med.close
Me.close (Bulario)
e fecha os Dois retornando ao Form Principal.
Qualquer coisa me Fala..
Por Exemplo:
Form Principal - Cadastro de Medicamento - Bulário em .ShowDialog()
Dai Usei um Botão de Fechar. e Coloquei
Frm_cad_med.close
Me.close (Bulario)
e fecha os Dois retornando ao Form Principal.
Qualquer coisa me Fala..
vamos la, se realmente sente q precisa abrir o form de destino de fundo....
no mdi form principal
form modal não pode ser filho do mdi principal.....
já no form segurança
no mdi form principal
Public Class MDIParent1
Private Sub AbrirToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles AbrirToolStripMenuItem.Click
Dim telaabrir As New frmabrir
telaabrir.MdiParent = Me
telaabrir.Show()
Dim telaseg As New frmseguranca
telaseg.destino = telaabrir
telaseg.ShowDialog()
End Sub
Private Sub AlterarToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles AlterarToolStripMenuItem.Click
Dim telaAlterar As New frmalterar
telaAlterar.MdiParent = Me
telaAlterar.Show()
Dim telaseg As New frmseguranca
telaseg.destino = telaAlterar
telaseg.ShowDialog()
End Sub
End Class
form modal não pode ser filho do mdi principal.....
já no form segurança
Public Class frmseguranca
Public destino As Form
Private Sub btnCancelar_Click(sender As System.Object, e As System.EventArgs) Handles btnCancelar.Click
Me.Dispose()
destino.Dispose()
End Sub
End Class
Boa tarde NICKOSOFT
Ainda não tentei com o código que você postou por último. Mas arrumei um jeito de usar o código que postou da primeira vez.
Ao invés de colocar o código no botão que chama os forms, coloquei dentro de um botão acesso em cada form.
Ficou assim o código:
No botão que chama os forms:
<code>If sstGrupo.Text = [Ô]Administrador[Ô] Then
If Application.OpenForms.OfType(Of frmControle).Count() > 0 Then
MsgBox([Ô]O Formulário CONTRÔLE já está aberto.[Ô], MsgBoxStyle.Critical)
frmControle.WindowState = FormWindowState.Normal
Exit Sub
Else
frmControle.Show()
End If
Else
If Application.OpenForms.OfType(Of frmControle).Count() > 0 Then
MsgBox([Ô]O Formulário CONTRÔLE já está aberto.[Ô], MsgBoxStyle.Critical)
frmControle.WindowState = FormWindowState.Normal
Exit Sub
Else
frmControle.Show()
frmControle.btnAcesso.PerformClick()
End If
End If</code>
No botão cancelar do form permissão:
<code>tela.Dispose()
Me.Dispose()
no botão de acesso dos formulários
<code> Dim telanova As New frmPermissao [ô]nome da tela a abrir
telanova.tela = Me
telanova.ShowDialog() </code>
Funcionou perfeitamente, espero seu comentário.
JOSEC valeu a ajuda.
Ainda não tentei com o código que você postou por último. Mas arrumei um jeito de usar o código que postou da primeira vez.
Ao invés de colocar o código no botão que chama os forms, coloquei dentro de um botão acesso em cada form.
Ficou assim o código:
No botão que chama os forms:
<code>If sstGrupo.Text = [Ô]Administrador[Ô] Then
If Application.OpenForms.OfType(Of frmControle).Count() > 0 Then
MsgBox([Ô]O Formulário CONTRÔLE já está aberto.[Ô], MsgBoxStyle.Critical)
frmControle.WindowState = FormWindowState.Normal
Exit Sub
Else
frmControle.Show()
End If
Else
If Application.OpenForms.OfType(Of frmControle).Count() > 0 Then
MsgBox([Ô]O Formulário CONTRÔLE já está aberto.[Ô], MsgBoxStyle.Critical)
frmControle.WindowState = FormWindowState.Normal
Exit Sub
Else
frmControle.Show()
frmControle.btnAcesso.PerformClick()
End If
End If</code>
No botão cancelar do form permissão:
<code>tela.Dispose()
Me.Dispose()
no botão de acesso dos formulários
<code> Dim telanova As New frmPermissao [ô]nome da tela a abrir
telanova.tela = Me
telanova.ShowDialog() </code>
Funcionou perfeitamente, espero seu comentário.
JOSEC valeu a ajuda.
tranquilo, se atendeu da forma q fez tudo bem, as vezes por texto fica difÃcil entendermos exatamente a necessidade, e nunca existe apenas uma forma de fazer algo funcionar...
Valeu, sem sua ajuda ficaria mas complicado.
Estou encerrando o tópico
Estou encerrando o tópico
Tópico encerrado , respostas não são mais permitidas