【问题标题】:Process.Start from .txt file to textboxProcess.Start 从 .txt 文件到文本框
【发布时间】:2019-06-22 17:18:09
【问题描述】:

我正在尝试解决我遇到的问题。我的工作是制作一个小应用程序,它将在应用程序窗口中显示 .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;

【问题讨论】:

  • 我想最好的起点是向给你这份工作的人提出这个问题。这样您就知道您在同一页面上,并且不会发生错误沟通。
  • 是的,想做同样的事情,但这是我作为求职应用程序需要做的任务之一,所以我想在联系他们之前尽我所能解决它.

标签: c#


【解决方案1】:

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

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

使用异步方法读取所有文本而不阻塞。

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

    • 是的,ReadAllText 在一行中完成,但这是我作为求职面试应用程序需要完成的任务之一。将尝试与他们联系,看看我是否真的需要使用它。感谢您的帮助!
    • 谷歌搜索了一下,发现它可以使用面板直接在应用程序内部像记事本一样运行。我怎么能在这里实现呢?
    • 看看this,好像直接解决了你的问题
    • 是的,做了 3 小时,然后我解决了一个问题。如果应用程序未处于全屏状态,则记事本不可见。但最后,我们做到了,呵呵。谢谢! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 2020-10-02
    • 2017-02-06
    相关资源
    最近更新 更多