Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengalihkan Output Konsol ke TextBox dalam Aplikasi Borang Windows?
Apabila mencipta aplikasi Windows Forms, anda mungkin mahu melaksanakan program konsol luaran dan mengubah hala output ke kotak teks dalam program tersebut. Untuk mencapai matlamat ini, ikuti langkah berikut:
Mula-mula, cipta objek Process
untuk mewakili program luaran yang anda mahu jalankan:
<code class="language-csharp">var p = new Process(); var path = @"C:\ConsoleApp.exe"; p.StartInfo.FileName = path; p.StartInfo.UseShellExecute = false;</code>
Untuk mengubah hala output standard daripada konsol ke kotak teks anda, tetapkan OutputDataReceived
pengendali acara:
<code class="language-csharp">p.OutputDataReceived += p_OutputDataReceived;</code>
Dalam pengendali acara OutputDataReceived
, anda boleh mengendalikan dan memanipulasi output daripada program konsol. Dalam kod contoh, ini dilakukan dengan menulis output ke konsol. Gantikan Console.WriteLine
dengan kod yang mengemas kini kotak teks.
<code class="language-csharp">static void p_OutputDataReceived(object sender, DataReceivedEventArgs e) { Console.WriteLine(">>> {0}", e.Data); // 将此行替换为更新文本框的代码 }</code>
Cara lain untuk mengendalikan output stdout dan ralat:
<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>
Sila ambil perhatian bahawa // 将此行替换为更新文本框的代码
bahagian ulasan perlu diubah suai berdasarkan nama kawalan kotak teks khusus anda dan kaedah kemas kini. Contohnya, jika nama kotak teks anda ialah textBox1
, anda boleh menggunakan kod berikut untuk mengemas kini kandungan kotak teks:
<code class="language-csharp">textBox1.AppendText(e.Data + Environment.NewLine);</code>
Ini akan menambahkan data yang diterima ke dalam kotak teks dan menambah aksara baris baharu selepas setiap baris data. Ingat untuk memastikan kotak teks anda telah dibuat dan ditambahkan pada borang anda sebelum memanggil RunWithRedirect
atau menetapkan pengendali acara OutputDataReceived
.
Atas ialah kandungan terperinci Bagaimana untuk Mengalihkan Output Konsol ke TextBox dalam Aplikasi Borang Windows?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!