Usuário com melhor resposta
Dúvida ao usar o ShowDialog

Pergunta
-
Olá pessoal, estou usando o MDI PARENT, está funcionando perfeitamente, mas somente com Show(), se usar ShowDialog(), dá uma mensagem de erro: O formulário que não é de nível superior, não pode ser exibido como caixa de diálogo Modal, o problema é que se usar o Show(), ao clicar fora do form, ele fecha, como eu poderia contornar esse problema ?
frmPagamento, é o terceiro form, seria um form chamando outro, por isso fiz a rotina dessa forma
if (Program.vfrmPagamento == null)
{
Program.vfrmPagamento = new frmPagamento();
// VINCULA FORMULARIO AO PAI
Program.vfrmPagamento.MdiParent = this.MdiParent; //(this se refere ao frmVendas)
//Program.vfrmPagamento.ShowDialog(); // ShowDialog para nao fechar se clicar fora do form
Program.vfrmPagamento.Show(); // nesse caso não pode ser Showdialog, tem que ser Show().
}C#, Windows Form.
Respostas
-
Olá, certo.. mantém como MDI e usa o evento Deactivate do Form para o cenário "se clicar fora, fechar o form"...
private void Form1_Deactivate(object sender, EventArgs e) { Close(); }
Se ajudou, marque como resposta! Obrigado.
- Marcado como Resposta Porter Porter sexta-feira, 5 de abril de 2019 15:29
Todas as Respostas
-
-
Olá Leonardo,
Se comentar o comando abaixo, ele perde a função de MDI FORM, entendeu, e preciso não deixar fechar se clicar fora ou se clicar fora, fechar o form, porque se ele ficar aberto, e houver alguma mudança nas informações do form anterior, o form em questão não atualiza.
//Program.vfrmPagamento.MdiParent = this.MdiParent; //(this se refere ao frmVendas)
C#, windows Form.
-
Olá, certo.. mantém como MDI e usa o evento Deactivate do Form para o cenário "se clicar fora, fechar o form"...
private void Form1_Deactivate(object sender, EventArgs e) { Close(); }
Se ajudou, marque como resposta! Obrigado.
- Marcado como Resposta Porter Porter sexta-feira, 5 de abril de 2019 15:29
-
-
Olá Leonardo, tenho mais uma dúvida, como faço para verificar se a tecla pressionada foi o F11 ou se foi clicado em btnPagamento, sei que pelo KeyDown, consigo capturar a tecla, mas preciso verificar a tecla na rotina abaixo.
private void frmPagamento_Deactivate(object sender, EventArgs e)
{
Se foi teclado F11 ou clicado em btnPagamento <-- qual comando usar aqui.
{
Close(); // Se clicar fora do form, ele fecha
}
}C#, WindowsForm
-
Olá, tenta o código...
private bool bF11 = false; private void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.F11) bF11 = true; } private void Form1_Deactivate(object sender, EventArgs e) { if (bF11) { Close(); } }
Se ajudou, marque como resposta! Obrigado.
-