C#关闭应用程序后打开文件

时间:2014-05-27 10:29:25

标签: c# winforms

我正在使用C#写入桌面上的文件。关闭我的应用程序时(关闭时)我可以打开这个文件(而不是双击它)吗?

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
   writer.Close();
   /* Some code here */
}

4 个答案:

答案 0 :(得分:5)

根据OP的 澄清评论 ,这里是,在记事本过程中打开文件:

Process.Start("notepad.exe", fileName);

<强>更新

确保&#34; kill&#34; &#34;父母&#34;在打开记事本进程后立即处理,否则它将挂起@Kilazur注释掉:

Process.GetCurrentProcess().Kill(); // or Application.Exit(); or anything else

答案 1 :(得分:4)

您可以使用Process.Start启动文件类型的默认应用程序。线索是以正确的方式使用ProcessStartInfo。传入文件路径并命名为“application”,并将UseShellExecute设置为true

我尝试了以下代码:

private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
    ProcessStartInfo si = new ProcessStartInfo();
    si.FileName = @"C:\somefile.txt";
    si.UseShellExecute = true;

    Process.Start(si);
}

这将启动记事本(默认应用程序),打开给定文件,然后结束应用程序。

请注意,这不一定是启动Nodepad,而是* .txt文件的默认应用程序,这可能是您想要的,正如您所说,您希望获得与双击该文件相同的行为。

答案 2 :(得分:1)

不确定您对'file'的意思,但您可以使用默认应用程序打开文档,如下所示:

System.Diagnostics.Process.Start(@"path to file");

注意:它将使用默认应用程序,通常是记事本。如果用户将默认应用程序更改为其他应用程序,则它将使用其他应用程序。这是一个很好的方法(我不会明确地调用notepad ,因为用户可能有另一个喜欢的编辑器,如notepad ++)。

另见Start a new process and Killing the current process

答案 3 :(得分:1)

不确定你想要什么但是想猜测:

  1. 如果您想在后台进程中写入文件,请使用streamwriter是正确的方法。

    使用(StreamWriter sw = new StreamWriter(filepath))  {       //写内容  }

  2. 如果您尝试向用户的桌面启动文件,则可能需要创建一个新进程来调用文件的关联应用程序。