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

C#关闭应用程序后打开文件,c#,winforms,C#,Winforms,我正在使用C#写入桌面上的文件。在关闭应用程序时(关闭时),是否可以打开此文件(而不是双击) 您可以使用Process.Start启动文件类型的默认应用程序。线索是正确使用ProcessStartInfo。将文件路径和名称作为“应用程序”传入,并将UseShellExecute设置为true 我尝试了以下代码: private void Form1_FormClosed(object sender, FormClosedEventArgs e) { ProcessStartInfo si

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


您可以使用
Process.Start
启动文件类型的默认应用程序。线索是正确使用
ProcessStartInfo
。将文件路径和名称作为“应用程序”传入,并将
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文件的默认应用程序,这可能是您想要的,正如您所说,您想要的是与双击文件相同的行为。

不确定“文件”是什么意思,但您可以使用默认应用程序打开文档,如下所示:

System.Diagnostics.Process.Start(@"path to file");
注意:它将使用默认应用程序,通常是记事本。如果用户将默认应用程序更改为其他应用程序,它将使用其他应用程序。这是一个很好的方法(我不会显式地调用notepad,因为用户可能有另一个喜欢的编辑器,比如notepad++)


另请参见。

不确定您到底想要什么,但尝试猜测:

  • 如果要在后台进程中写入文件,使用streamwriter是正确的方法

    使用(StreamWriter sw=新StreamWriter(文件路径)) { //写内容。 }

  • 如果试图将文件启动到用户桌面,则可能需要创建一个新进程来调用该文件的关联应用程序


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

    Process.Start("notepad.exe", fileName);
    
    更新:

    请确保在打开记事本进程后立即“杀死”该“父”进程,否则它将挂起,因为@Kilazur评论道:

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

    我不明白。请重新措辞你的问题。你说的“打开文件”是什么意思?作为一个对象?过程在记事本中?我完成了对文件的写入,现在想在记事本中打开一个文本文件(我通过双击文件名来完成)。在我关闭申请表后,C#中有一种方法可以打开此文件?@user3428151好的,请查看我的答案。可能重复:,值得一提的是,当你像那样打开文件时,如果您试图关闭(程序),程序将挂起。至少我正在经历它,是的,这与OP没有太大关系。抓到了!愚蠢的显而易见,但在肥皂和其他东西发明之前,天才就是这样被创造出来的。事实上,我怀疑你是否真的要扼杀这个过程。我将尝试,我将再次发表评论。我刚刚尝试过,但应用程序在我的案例中没有挂起。看我的答案-我现在就要编辑了。
    Process.GetCurrentProcess().Kill(); // or Application.Exit(); or anything else