使用 C# Winforms 创建和打开临时文本文件

我有一个收集和编译数据并显示在表单上的 winforms 应用程序。我希望用户能够单击一个按钮,该按钮基本上将该数据导出到一个 txt 文件,他们可以在其中打印或保存文本文件。

我知道using StreamWriter txtFile = File.CreateText(@"C:\path\Foo.txt")并且我已经用它来生成错误日志和东西,但这可能不起作用,因为我不一定想创建一个新的永久文件。基本上,我想要的是:

用户单击一个按钮,然后记事本弹出一些信息(基于存储在变量中的内容)。然后,用户可以决定是否要保存它或打印它或其他什么。当他们关闭它时,系统会提示他们保存(就像记事本一样),然后如果他们选择不保存,文件就会消失。如果我使用上面的代码,每次用户单击该按钮时都会创建一个新文件,我不希望这样,因为我的驱动器将充满 10,000 个文本文件。

E : 好的,有几个人建议使用这个解决方案:

在 C# 中向 Notepad++ 发送消息

但这对我不起作用。我复制了代码,放入一个按钮,将其更改Notepad++为just Notepad,但它不起作用。我在适当的using行中添加了。还是行不通。我并不是说这不是解决方案,我只是说我无法让它发挥作用。


心有法竹
浏览 295回答 2
2回答

阿晨1998

您可以执行以下操作,使用剪贴板并管理“notepad.exe”进程(它应该适用于任何文本编辑器):1)添加此参考:    [DllImport("user32.dll")]    static extern bool SetForegroundWindow(IntPtr hWnd);2)打开记事本并粘贴您的数据:public void OpenNotepad(){    Clipboard.SetText("All your text");    Process process = Process.Start("notepad.exe");    process.WaitForInputIdle();    SetForegroundWindow(process.MainWindowHandle);    SendKeys.Send("^V");}请注意,这不会创建任何临时文件,但我认为这是您想要的行为。

侃侃尔雅

第一个选项: 我建议向用户显示一个保存对话框。阅读文档:https ://docs.microsoft.com/en-us/dotnet/framework/winforms/controls/how-to-save-files-using-the-savefiledialog-component   // Displays a SaveFileDialog so the user can save the Image     // assigned to Button2.     SaveFileDialog saveFileDialog1 = new SaveFileDialog();     saveFileDialog1.Filter = "Text Image|*.txt";     saveFileDialog1.Title = "Save the File";     saveFileDialog1.ShowDialog();     // If the file name is not an empty string open it for saving.     if(saveFileDialog1.FileName != "")     {          /// Write a text file here at path saveFileDialog1.FileName   }第二个选项(如果您仍想坚持使用临时文件):我建议使用临时文件夹。   string windowsTempPath = Path.GetTempPath();   var filePath = Path.Combine(windowsTempPath, "file_" + DateTime.Now.ToFileTimeUtc() + ".txt");   //// Write txt file   //// For opening file, use Process.Start   Process.Start(filePath);这将启动默认程序以打开 txt 文件。你不会对记事本或记事本++有任何依赖。希望这可以帮助。
打开App,查看更多内容
随时随地看视频慕课网APP