首頁 > 後端開發 > C++ > 如何將控制台輸出重新導向到 Windows 窗體應用程式中的文字方塊?

如何將控制台輸出重新導向到 Windows 窗體應用程式中的文字方塊?

Barbara Streisand
發布: 2025-01-19 01:01:12
原創
145 人瀏覽過

How to Redirect Console Output to a TextBox in a Windows Forms Application?

將外部程式的控制台輸出重新導向到文字方塊

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板