繁体   English   中英

Process.Start 从 .txt 文件到文本框

[英]Process.Start from .txt file to textbox

我正在努力解决我遇到的一个问题。 我的工作是制作小应用程序,它将在应用程序窗口中显示 .txt 文件中的文本,但出于某种原因,他们告诉我我必须使用 @ ShellExecute(使用 Process.Start)。 有没有办法做到这一点? 因为当我使用 ShellExecute 时,该文件在按下按钮后在记事本中打开,我猜这就是使用 Shell 的意义所在。

我尝试做的代码很少,但没有成功。 谢谢指教!

string filePath = @"C:\Folder\file.txt";
ProcessStartInfo psi = new ProcessStartInfo(filePath);
psi.UseShellExecute = false;
psi.RedirectStandardOutput = true;
psi.CreateNoWindow = true;
var proc = Process.Start(psi);
string s = proc.StandardOutput.ReadToEnd();
textBox1.Text = s;

如果您绝对需要这样做,您可以创建第二个应用程序TxtToTextBox ,您可以使用Process.Start从您的第一个应用程序运行它(使用该应用程序的路径而不是 txt 文件初始化ProcessStartInfo )。

然后,您可以使用psi.Arguments = $"\\"{filePath}\\";为该进程提供一个指向该文件的参数(这还会在您的路径周围添加引号,因此空格会被转义)。

然后在您的第二个应用程序中,您可以做明智的事情,只需使用File.ReadAllLines(args[0])读取文件并将其打印到您的文本框中。

如果可能,我建议与告诉您使用Process.Start人交谈,并询问他们更多关于您为什么应该使用 is 的原因,因为这是我能想到的最迂回的方法之一。

不要使用ProcessStartInfo ,而是像这样尝试StreamReader

        string filePath = @"C:\Folder\file.txt";
        StreamReader sr = new StreamReader(filePath);
        string s = sr.ReadToEndAsync().GetAwaiter().GetResult();
        Console.WriteLine(s);

使用异步方法在不阻塞的情况下读取所有文本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM