FormClosing メソッドの Yes/No/Cancel メッセージボックスのキャンセル ボタンの処理

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

  •  12-09-2019
  •  | 
  •  

質問

を置きました はい/いいえ/キャンセルメッセージボックスフォームの終了 私のフォームのメソッド。これがメッセージボックスのテキストです: データを保存しますか?

私は専門家ではないので、ユーザーがクリックした場合の対処方法がわかりません キャンセル ボタン?「キャンセル」ボタンをクリックした結果は、「フォームは開いたまま」になるはずです。
フォームが閉じてしまうことを防ぐ方法 フォームの終了 方法?

これまでに次のように書きました。;)

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

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

コードを完成させるのを手伝ってください!
ありがとう

役に立ちましたか?

解決

FormClosing には Boolean パラメータがあり、関数が戻るときに True に設定すると、フォーム (IIRC) を閉じるのがキャンセルされます。

編集:例えば、

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

ここを参照.

他のヒント

実際には、イベントハンドラーが不足していると思います。ああ、偶数ハンドラーがなくてもそれに頼ることはできません。次のようなイベント ハンドラーを使用してイベントを追加する必要があります。

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

C# で書いてここにコピー&ペーストしたわけではないので、このコードのスペルが間違っている場合はご容赦ください。さっきここに書きました。:)

次のようなものが考えられます。

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

上記のコードは、「はい」または「いいえ」を選択した場合にのみフォームを閉じ、「はい」を選択した場合にデータを保存します。

この機能を試してみるといいでしょう

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

そしてこのように使用されます。

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

これを試すことができます:

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

必要に応じて、同じことができます No そして Cancel を使用してボタンをクリックする DialogResult クラス

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top