Maison >développement back-end >C++ >Comment rediriger la sortie de la console vers une TextBox dans une application Windows Forms ?
Lors de la création d'une application Windows Forms, vous souhaiterez peut-être exécuter un programme de console externe et rediriger la sortie vers une zone de texte du programme. Pour y parvenir, suivez ces étapes :
Tout d'abord, créez un objet Process
pour représenter le programme externe que vous souhaitez exécuter :
<code class="language-csharp">var p = new Process(); var path = @"C:\ConsoleApp.exe"; p.StartInfo.FileName = path; p.StartInfo.UseShellExecute = false;</code>
Pour rediriger la sortie standard de la console vers votre zone de texte, définissez le gestionnaire d'événements OutputDataReceived
:
<code class="language-csharp">p.OutputDataReceived += p_OutputDataReceived;</code>
Dans le gestionnaire d'événements OutputDataReceived
, vous pouvez gérer et manipuler la sortie du programme console. Dans l'exemple de code, cela se fait en écrivant la sortie sur la console. Remplacez Console.WriteLine
par le code qui met à jour la zone de texte.
<code class="language-csharp">static void p_OutputDataReceived(object sender, DataReceivedEventArgs e) { Console.WriteLine(">>> {0}", e.Data); // 将此行替换为更新文本框的代码 }</code>
Une autre façon de gérer à la fois la sortie standard et la sortie d'erreur :
<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>
Veuillez noter que la section de commentaires // 将此行替换为更新文本框的代码
doit être modifiée en fonction du nom de votre contrôle de zone de texte spécifique et de la méthode de mise à jour. Par exemple, si le nom de votre zone de texte est textBox1
, vous pouvez utiliser le code suivant pour mettre à jour le contenu de la zone de texte :
<code class="language-csharp">textBox1.AppendText(e.Data + Environment.NewLine);</code>
Cela ajoutera les données reçues dans la zone de texte et ajoutera un caractère de nouvelle ligne après chaque ligne de données. N'oubliez pas de vous assurer que votre zone de texte a été créée et ajoutée à votre formulaire avant d'appeler RunWithRedirect
ou de définir le gestionnaire d'événements OutputDataReceived
.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!