Movimentação botão Cancelar no Sim / Não / Cancelar Messagebox no Método FormClosing
-
12-09-2019 - |
Pergunta
Eu coloquei um Sim / Não / Cancelar Messagebox na FormClosing Método da minha forma. e agora este é mensagem de texto caixa:? você deseja salvar os dados
Eu não sou um profesional e não sabem como lidar com se o usuário clicou Cancelar Button?
Exatamente o resultado de clicar no botão Cancelar deve ser a forma permanecerá aberta.
Como evitar Fechando a minha forma em FormClosing método?
Eu escrevi até agora:;)
DialogResult dr = MessageBoxFarsi.Show("Do You Want to Save Data?","",MessageBoxButtons.YesNoCancel,MessageBoxIcon.Warning);
//...
else if (dr == DialogResult.Cancel)
{
???
}
Por favor, me ajude a completar o meu código!
Graças
Solução
FormClosing tem um parâmetro booleano que, se for definido como verdadeiro quando a função retorna, irá cancelar fechar o formulário, IIRC.
EDIT: Por exemplo,
private void Form1_FormClosing(Object sender, FormClosingEventArgs e) {
// Set e.Cancel to Boolean true to cancel closing the form
}
Outras dicas
Na verdade eu acho que está faltando manipulador de eventos, oh você não pode voltar-se para que, mesmo sem um manipulador mesmo. Você deve adicionar um evento com um manipulador de eventos como este.
private void myform_Closing(object sender, FormClosingEventArgs e)
{
DialogResult dr = MessageBoxFarsi.Show("Do You Want to Save Data?","",MessageBoxButtons.YesNoCancel,MessageBoxIcon.Warning)
if (dr == DialogResult.Cancel)
{
e.Cancel = true;
return;
}
else if (dr == DialogResult.Yes)
{
//TODO: Save
}
}
//now add a default constructor
public myform() // here use your form name.
{
this.FormClosing += new FormClosingEventHandler(myform_Closing);
}
Perdoe-me se há alguns êrros grafias neste código, porque eu não escrevi isso em C # e copiar e colar aqui. Eu só escrevi aqui. :)
Você poderia ter algo como o seguinte:
if(dr == DialogResult.Cancel)
{
e.Cancel = true;
}
else if(dr == DialogResult.Yes)
{
//Save the data
}
O código acima deve somente perto a forma se você escolher sim ou não, e vai salvar os dados quando você escolhe sim.
você deve tentar esta função
public DialogResult msgClose(string msg)
{
return MessageBox.Show(msg, "Close", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
}
e usado como este.
private void frm_FormClosing(object sender, FormClosingEventArgs e)
{
if (conn.msgClose("Application close?") == DialogResult.No)
e.Cancel = true;
else
{
this.Close();
}
}
Você pode tentar o seguinte:
if (MessageBox.Show("Are you sure you want to quit?", "Attention!!", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning) == DialogResult.Yes)
{
//this block will be executed only when Yes is selected
MessageBox.Show("Data Deleted", "Done", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else
{
//this block will be executed when No/Cancel is selected
//the effect of selecting No/Cancel is same in MessageBox (particularly in this event)
}
Se necessário mesmo que você pode fazer para o Botão No
e Cancel
clique usando a classe DialogResult