在 C# Windows 窗體文字方塊中擷取控制台輸出
許多 C# Windows 窗體應用程式需要執行外部控制台應用程式並在應用程式的使用者介面中顯示其輸出。 常見的解決方案是將控制台輸出重新導向到文字方塊。 本指南概述了該過程。
關鍵步驟包括啟動具有輸出重定向的外部進程、處理輸出事件,然後監視進程。
啟動進程並重新導向輸出:
先建立一個 Process
物件並配置其 StartInfo
屬性以重定向標準輸出和標準錯誤流:
<code class="language-csharp">Process p = new Process(); p.StartInfo.FileName = @"C:\ConsoleApp.exe"; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardError = true; p.EnableRaisingEvents = true; p.StartInfo.CreateNoWindow = true; // Prevents a separate console window p.Start();</code>
處理輸出事件:
接下來,為 OutputDataReceived
和 ErrorDataReceived
事件註冊事件處理程序。 每當外部進程將資料傳送到其標準輸出或標準錯誤流時,就會觸發這些事件。 單一事件處理程序可用於以下兩者:
<code class="language-csharp">p.ErrorDataReceived += Proc_DataReceived; p.OutputDataReceived += Proc_DataReceived; p.BeginErrorReadLine(); p.BeginOutputReadLine();</code>
Proc_DataReceived
事件處理程序(您需要定義)將接收輸出資料並相應地更新文字方塊。 例如:
<code class="language-csharp">private void Proc_DataReceived(object sender, DataReceivedEventArgs e) { if (e.Data != null) { this.textBox1.Invoke((MethodInvoker)delegate { textBox1.AppendText(e.Data + Environment.NewLine); }); } }</code>
運行並等待進程:
最後,啟動該過程並等待其完成:
<code class="language-csharp">p.Start(); p.WaitForExit();</code>
透過執行以下步驟,您可以將外部控制台應用程式的輸出無縫整合到 C# Windows 窗體應用程式中,提供即時回饋並增強使用者體驗。 請記住處理潛在的異常並考慮添加錯誤檢查以確保穩健性。
以上是如何在 C# 中將控制台輸出重定向到文字方塊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!