在创建 Windows 窗体应用程序时,您可能需要执行外部控制台程序并将输出重定向到程序中的文本框。要实现此目的,请按照以下步骤操作:
首先,创建一个 Process
对象来表示您要运行的外部程序:
<code class="language-csharp">var p = new Process(); var path = @"C:\ConsoleApp.exe"; p.StartInfo.FileName = path; p.StartInfo.UseShellExecute = false;</code>
要将标准输出从控制台重定向到您的文本框,请设置 OutputDataReceived
事件处理程序:
<code class="language-csharp">p.OutputDataReceived += p_OutputDataReceived;</code>
在 OutputDataReceived
事件处理程序中,您可以处理和处理来自控制台程序的输出。在示例代码中,这是通过将输出写入控制台来完成的。用更新文本框的代码替换 Console.WriteLine
。
<code class="language-csharp">static void p_OutputDataReceived(object sender, DataReceivedEventArgs e) { Console.WriteLine(">>> {0}", e.Data); // 将此行替换为更新文本框的代码 }</code>
另一种方法可以同时处理标准输出和错误输出:
<code class="language-csharp">void RunWithRedirect(string cmdPath) { var proc = new Process(); proc.StartInfo.FileName = cmdPath; // 设置输出重定向 proc.StartInfo.RedirectStandardOutput = true; proc.StartInfo.RedirectStandardError = true; proc.EnableRaisingEvents = true; proc.StartInfo.CreateNoWindow = true; // 请参见下面的输出处理程序 proc.ErrorDataReceived += proc_DataReceived; proc.OutputDataReceived += proc_DataReceived; proc.Start(); proc.BeginErrorReadLine(); proc.BeginOutputReadLine(); proc.WaitForExit(); } void proc_DataReceived(object sender, DataReceivedEventArgs e) { // 输出将在字符串 e.Data 中 // 将此行替换为更新文本框的代码 }</code>
请注意,// 将此行替换为更新文本框的代码
注释部分需要根据您的具体文本框控件名称和更新方法进行修改。例如,如果您的文本框名称为 textBox1
,您可以使用以下代码更新文本框内容:
<code class="language-csharp">textBox1.AppendText(e.Data + Environment.NewLine);</code>
这将把接收到的数据追加到文本框中,并在每行数据后添加一个换行符。 记得在调用 RunWithRedirect
或设置 OutputDataReceived
事件处理程序之前,确保您的文本框已经创建并添加到您的窗体中。
以上是如何将控制台输出重定向到 Windows 窗体应用程序中的文本框?的详细内容。更多信息请关注PHP中文网其他相关文章!