Windows Forms 애플리케이션을 생성할 때 외부 콘솔 프로그램을 실행하고 출력을 프로그램의 텍스트 상자로 리디렉션할 수 있습니다. 이를 달성하려면 다음 단계를 따르세요.
먼저 실행하려는 외부 프로그램을 나타내는 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>
stdout과 오류 출력을 모두 처리하는 또 다른 방법:
<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 Forms 애플리케이션에서 콘솔 출력을 TextBox로 리디렉션하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!