0

プログラムを閉じる前に、ユーザーが作業を保存したかどうかを検出しようとしています。以下のコーディングを試しました。

void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if (e.CloseReason == CloseReason.UserClosing)
        MessageBox.Show("Unsave Work");
}

しかし、うまくいきません。プログラムを閉じても何も起こりません。

4

3 に答える 3

5

.Net で EventHandler を追加するには、主に 2 つの方法があります。

デザイナーを使用して追加できます。

ここに画像の説明を入力

または、コードに追加することもできます

public Form1()
{
    InitializeComponent();
    this.FormClosing+=new FormClosingEventHandler(Form1_FormClosing);
}

void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if (e.CloseReason == CloseReason.UserClosing)
    {
        var result = MessageBox.Show("Unsave Work", "", MessageBoxButtons.OKCancel);
        if (result == DialogResult.Cancel)
            e.Cancel = true;      
    }
} 
于 2012-07-20T05:48:37.957 に答える
3

最初に Formclosing 関数を FormClosing イベントにバインドしてください。

次に、以下のように確認します。

 void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (e.CloseReason == CloseReason.UserClosing)
                {
                  if(work not saved)//Check your condition
                   {
                     MessageBox.Show("Unsave Work");
                     e.Cancel = true;
                    }
                }
        }
于 2012-07-20T05:34:06.693 に答える
0

次のようにユーザーに尋ねるだけです。

if (MessageBox.Show("Would you like to save your work", "Save work", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                SaveWork();
            }

そして、ユーザーが最初に作業を保存したかどうかを検出する方法があれば、それはさらに良いでしょう:

if (!IsWorkSaved())
            {
                if (MessageBox.Show("Would you like to save your work", "Save work", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    SaveWork();
                }
            }
于 2012-07-20T05:33:00.653 に答える