为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
心有法竹 2022-07-23 16:17:07
我有一个收集和编译数据并显示在表单上的 winforms 应用程序。我希望用户能够单击一个按钮,该按钮基本上将该数据导出到一个 txt 文件,他们可以在其中打印或保存文本文件。我知道using StreamWriter txtFile = File.CreateText(@"C:\path\Foo.txt")并且我已经用它来生成错误日志和东西,但这可能不起作用,因为我不一定想创建一个新的永久文件。基本上,我想要的是:用户单击一个按钮,然后记事本弹出一些信息(基于存储在变量中的内容)。然后,用户可以决定是否要保存它或打印它或其他什么。当他们关闭它时,系统会提示他们保存(就像记事本一样),然后如果他们选择不保存,文件就会消失。如果我使用上面的代码,每次用户单击该按钮时都会创建一个新文件,我不希望这样,因为我的驱动器将充满 10,000 个文本文件。E : 好的,有几个人建议使用这个解决方案:在 C# 中向 Notepad++ 发送消息但这对我不起作用。我复制了代码,放入一个按钮,将其更改Notepad++为just Notepad,但它不起作用。我在适当的using行中添加了。还是行不通。我并不是说这不是解决方案,我只是说我无法让它发挥作用。
查看完整描述

2 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

您可以执行以下操作,使用剪贴板并管理“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");

}

请注意,这不会创建任何临时文件,但我认为这是您想要的行为。


查看完整回答
反对 回复 2022-07-23
?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

第一个选项: 我建议向用户显示一个保存对话框。


阅读文档: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 文件。你不会对记事本或记事本++有任何依赖。


希望这可以帮助。


查看完整回答
反对 回复 2022-07-23
  • 2 回答
  • 0 关注
  • 294 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号