我有一个winforms应用程序,该应用程序收集和编译数据并显示在表单上。我希望用户能够单击一个基本上将数据导出到txt文件的按钮,他们可以在其中打印或保存文本文件。
我了解using StreamWriter txtFile = File.CreateText(@"C:\path\Foo.txt")
,并且已经使用它来生成错误日志和内容,但这可能无法正常工作,因为我不一定要创建新的永久文件。基本上,我想要的是:
用户单击一个按钮,然后记事本会弹出一些信息(基于存储在变量中的内容)。然后,用户可以决定是否要保存或打印它或其他内容。当他们关闭文件时,系统会提示他们保存(就像记事本一样),然后如果他们选择不保存,文件就会消失。如果使用上面的代码,则每次用户单击该按钮时,我都会创建一个新文件,我不希望这样做,否则驱动器将充满10,000个文本文件。
E :好的,所以有人建议使用此解决方案:
SendMessage to Notepad++ in C#
但这对我不起作用。我复制了代码,将其放在按钮中,将Notepad++
更改为Notepad
,但无法正常工作。我添加了适当的using
行。还是行不通。我并不是说这不是解决方案,我只是说我无法使其正常工作。
答案 0 :(得分:1)
第一个选项: 我建议向用户显示一个保存对话框。
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");
}
请注意,这不会创建任何临时文件,但是我认为这是您想要的行为。