Abbrechen-Button Handhabung in Ja / Nein / Abbrechen Messagebox in Formclosing-Methode

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

  •  12-09-2019
  •  | 
  •  

Frage

Ich habe eine Ja / Nein / Abbrechen Messagebox in Formclosing Methode meiner Form. und jetzt ist dieses Feld Nachricht Text: Sie mögen Daten speichern

Ich bin kein profesional und nicht wissen, wie zu behandeln, wenn Benutzer geklickt hat Abbrechen Button? Genau das Ergebnis auf Schaltfläche Abbrechen des Klickens muss das Formular geöffnet bleiben sein.
wie meine Form verhindern Closing in Formclosing Methode?

I Bisher schrieb:;)

DialogResult dr = MessageBoxFarsi.Show("Do You Want to Save Data?","",MessageBoxButtons.YesNoCancel,MessageBoxIcon.Warning);

//...
else if (dr == DialogResult.Cancel)
{
    ???
}

Bitte helfen Sie mir meinen Code zu vervollständigen!
Dank

War es hilfreich?

Lösung

hat einen Formclosing Booleschen Parameter, die, wenn auf True gesetzt, wenn die Funktion zurück, heben sich die Form schließt, IIRC.

EDIT: Zum Beispiel:

private void Form1_FormClosing(Object sender, FormClosingEventArgs e) {
    // Set e.Cancel to Boolean true to cancel closing the form
}

Siehe hier .

Andere Tipps

Eigentlich glaube ich Ihnen Event-Handler fehlen, oh können Sie nicht zu, dass drehen auch ohne selbst Handler. Sie müssen ein Ereignis mit einem Event-Handler wie folgt hinzufügen.

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); 
}

Verzeihen Sie mir, wenn es einige Verfehlungen Schreibweisen in diesem Code sind, weil ich es nicht in c # geschrieben hat, und kopieren Sie hier einfügen. Ich schrieb es einfach hier. :)

Sie könnten so etwas wie die folgenden haben:

if(dr == DialogResult.Cancel)
{
    e.Cancel = true;
}
else if(dr == DialogResult.Yes)
{
    //Save the data
}

Der obige Code sollte nur das Formular schließen, wenn Sie ja wählen oder nicht, und wird die Daten speichern, wenn Sie ja wählen.

sollten Sie diese Funktion versuchen

public DialogResult msgClose(string msg)
{
     return MessageBox.Show(msg, "Close", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
}

und wie diese verwendet werden.

private void frm_FormClosing(object sender, FormClosingEventArgs e)
{
     if (conn.msgClose("Application close?") == DialogResult.No)
         e.Cancel = true;
     else
     {
         this.Close();
     }
}

Sie können versuchen, diese:

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)
}

Wenn gleiche benötigt man für den No und Cancel Button-Klick tut DialogResult Klasse mit

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top