Movimentação botão Cancelar no Sim / Não / Cancelar Messagebox no Método FormClosing

StackOverflow https://stackoverflow.com/questions/1252613

  •  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

Foi útil?

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
}

Veja aqui .

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top