VS 2010 を使用していて、Yes|No|Cancel ダイアログを介してフォームを閉じるイベントをキャンセルしたいのですが、ダイアログ ボックスのイベント ハンドラーに e.Cancel を入れると、「'System.EventArgs'」というエラーが表示されます。 'Cancel' の定義が含まれておらず、タイプ 'System.EventArgs' の最初の引数を受け入れる拡張メソッド 'Cancel' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)。また、「キャンセル」という言葉の下に赤い線があります。私がオンラインで読んだことはすべて、これが FormClosing イベントをキャンセルする唯一の方法だと言っています。VS2008 でコードをテストしましたが、同じことを行います。
イベント ハンドラのコードは次のとおりです。
private void displayMessageBox(object sender, EventArgs e)
{
DialogResult result = MessageBox.Show("Do you want to save the changes to the document before closing it?", "MyNotepad",MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning);
if (result == DialogResult.Yes)
{
saveToolStripMenuItem_Click(sender, e);
}
else if (result == DialogResult.No)
{
rtbMain.Clear();
this.Text = "Untitled - MyNotepad";
}
else if (result == DialogResult.Cancel)
{
// Leave the window open.
e.Cancel() = true;
}
使用法は次のとおりです(違いが生じる場合):
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;