在建立 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中文網其他相關文章!