Heim >Backend-Entwicklung >C++ >Wie leite ich die Konsolenausgabe in eine TextBox in einer Windows Forms-Anwendung um?
Beim Erstellen einer Windows Forms-Anwendung möchten Sie möglicherweise ein externes Konsolenprogramm ausführen und die Ausgabe in ein Textfeld im Programm umleiten. Um dies zu erreichen, befolgen Sie diese Schritte:
Erstellen Sie zunächst ein Process
-Objekt, das das externe Programm darstellt, das Sie ausführen möchten:
<code class="language-csharp">var p = new Process(); var path = @"C:\ConsoleApp.exe"; p.StartInfo.FileName = path; p.StartInfo.UseShellExecute = false;</code>
Um die Standardausgabe von der Konsole in Ihr Textfeld umzuleiten, legen Sie den OutputDataReceived
-Ereignishandler fest:
<code class="language-csharp">p.OutputDataReceived += p_OutputDataReceived;</code>
Im OutputDataReceived
Event-Handler können Sie die Ausgabe des Konsolenprogramms verarbeiten und manipulieren. Im Beispielcode erfolgt dies durch Schreiben der Ausgabe auf die Konsole. Ersetzen Sie Console.WriteLine
durch Code, der das Textfeld aktualisiert.
<code class="language-csharp">static void p_OutputDataReceived(object sender, DataReceivedEventArgs e) { Console.WriteLine(">>> {0}", e.Data); // 将此行替换为更新文本框的代码 }</code>
Eine andere Möglichkeit, sowohl Standardausgabe als auch Fehlerausgabe zu verarbeiten:
<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>
Bitte beachten Sie, dass der Kommentarbereich // 将此行替换为更新文本框的代码
basierend auf Ihrem spezifischen Textfeld-Steuerelementnamen und Ihrer Aktualisierungsmethode geändert werden muss. Wenn der Name Ihres Textfelds beispielsweise textBox1
lautet, können Sie den folgenden Code verwenden, um den Inhalt des Textfelds zu aktualisieren:
<code class="language-csharp">textBox1.AppendText(e.Data + Environment.NewLine);</code>
Dadurch werden die empfangenen Daten in das Textfeld eingefügt und nach jeder Datenzeile ein Zeilenumbruchzeichen eingefügt. Denken Sie daran, sicherzustellen, dass Ihr Textfeld erstellt und Ihrem Formular hinzugefügt wurde, bevor Sie RunWithRedirect
aufrufen oder den OutputDataReceived
-Ereignishandler festlegen.
Das obige ist der detaillierte Inhalt vonWie leite ich die Konsolenausgabe in eine TextBox in einer Windows Forms-Anwendung um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!