1

Windows フォームを使用していますが、プロセスが完了する前にユーザーがウィンドウをシャットダウンしようとしたり、アプリケーションを閉じようとした場合 (ユーザーがプロセスを完了するのを忘れた場合) に、プロセスが完了していないことをユーザーに表示したいのですが、ユーザーが [OK] を押した場合、ウィンドウのシャットダウンを停止し、ユーザーにプロセスを完了させたいのですが、ネット上でコードを見つけましたが、C# ではなく VB にあります。

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if (e.CloseReason.Equals(CloseReason.WindowsShutDown))
    {
        Microsoft.VisualBasic.Interaction.Shell("shutdown -a", AppWinStyle.MinimizedFocus, false, -1);
        MessageBox.Show("Shutdown process cancelled!");
    }
}
4

1 に答える 1

5

代わりに、このコードスニペットを使用することをお勧めしe.Cancelます。要件に従って、次のように試してください。

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if (e.CloseReason.Equals(CloseReason.WindowsShutDown))
    {
       if (MessageBox.Show("You are closing this app.\n\nAre you sure you wish to exit ?", "Warning: Not Submitted", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Stop) == DialogResult.Yes)
           return;    
       else    
           e.Cancel = true;
    }
}

参照:SystemEvents.SessionEndingイベント

ユーザーがログオフまたはシステムのシャットダウンを試みているときに発生します。

于 2012-10-29T06:35:19.443 に答える