Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mengalihkan Output Konsol ke TextBox dalam Aplikasi Borang Windows?

Bagaimana untuk Mengalihkan Output Konsol ke TextBox dalam Aplikasi Borang Windows?

Barbara Streisand
Lepaskan: 2025-01-19 01:01:12
asal
202 orang telah melayarinya

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

Ubah hala keluaran konsol program luaran ke kotak teks

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:

Dapatkan output konsol

Mula-mula, cipta objek Process untuk mewakili program luaran yang anda mahu jalankan:

var p = new Process();
var path = @"C:\ConsoleApp.exe";

p.StartInfo.FileName = path;
p.StartInfo.UseShellExecute = false;
Salin selepas log masuk

Untuk mengubah hala output standard daripada konsol ke kotak teks anda, tetapkan OutputDataReceived pengendali acara:

p.OutputDataReceived += p_OutputDataReceived;
Salin selepas log masuk

Pemprosesan acara output konsol

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.

static void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
    Console.WriteLine(">>> {0}", e.Data); // 将此行替换为更新文本框的代码
}
Salin selepas log masuk

Alternatif

Cara lain untuk mengendalikan output stdout dan ralat:

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 中
    // 将此行替换为更新文本框的代码
}
Salin selepas log masuk

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:

textBox1.AppendText(e.Data + Environment.NewLine);
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan