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

时间:2019-01-15 14:43:32

标签: c# winforms

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

我了解using StreamWriter txtFile = File.CreateText(@"C:\path\Foo.txt"),并且已经使用它来生成错误日志和内容,但这可能无法正常工作,因为我不一定要创建新的永久文件。基本上,我想要的是:

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

E :好的,所以有人建议使用此解决方案:

SendMessage to Notepad++ in C#

但这对我不起作用。我复制了代码,将其放在按钮中,将Notepad++更改为Notepad,但无法正常工作。我添加了适当的using行。还是行不通。我并不是说这不是解决方案,我只是说我无法使其正常工作。

2 个答案:

答案 0 :(得分:1)

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

在以下位置阅读文档:https://docs.microsoft.com/en-us/dotnet/framework/winforms/controls/how-to-save-files-using-the-savefiledialog-component

sudo chown -R <wordpress_user> <wp_rootdir>; read; sudo chown -R <myuser> <wp_rootdir>

第二个选项(如果您仍然想保留临时文件):

我建议使用临时文件夹。

   // 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
   }

这将启动默认程序以打开txt文件。您将不会依赖于记事本或记事本++。

希望这会有所帮助。

答案 1 :(得分:1)

您可以使用剪贴板并管理“ 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");
}

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