private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("Are you Sure you want to Exit. Click Yes to Confirm and No to continue", "WinForm", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
{
e.Cancel = true;
}
else
{
Application.Exit();
}
}
Application.Exit();由于某种原因,让我在程序退出前单击两次YES。 它像这样关闭浏览器窗口:
Process.Start("explorer", String.Format("/select,{0}", t));
当我退出程序时,此资源管理器会保持打开状态。
答案 0 :(得分:1)
嗯,从技术上讲,这些窗口不属于您的应用程序,因此不应该关闭它们。
编辑,关于评论:以下提供的解决方案无效,对不起,我的错误:)
如果你真的想要控制你打开的浏览器窗口,你可以收集Start方法的返回值(http://msdn.microsoft.com/en-us/library/53ezey2s.aspx),然后在每个窗口上调用Kill方法(http://msdn.microsoft.com/en-us/library/system.diagnostics.process.kill.aspx) 。请记住检查它们是否仍然存在,因为用户可能已经自行关闭它们。
一个窗口的简单示例:
class Form
{
//...
private Process explorerWindow = null;
}
//...
this.explorerWindow = Process.Start("explorer", String.Format("/select,{0}", t));
//... (in OnFormClosing)
if (this.explorerWindow != null && !this.explorerWindow.HasExited)
{
this.explorerWindow.Kill();
}
做类似的,但是使用List。您还可以连接到OnExited事件并从列表中删除特定进程,当它们消失时(例如,因为用户关闭了它们)。