在窗体上拖一个textbox(txtInput)用来接受输入,一个textbox(txtOutput)接受输出,两个按钮:btnOK,btnStart
代码:
using System;
using SystemCollectionsGeneric;
using SystemComponentModel;
using SystemData;
using SystemDrawing;
using SystemText;
using SystemWindowsForms;
using SystemDiagnostics;
using SystemIO;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
private Process _process;
private StreamWriter _writer;
private MethodInvoker _methodInvoker;
private string _currentOutput;
public Form1()
{
InitializeComponent();
_currentOutput = stringEmpty;
_methodInvoker = new MethodInvoker( ShowOutput );
_process = new Process();
_processOutputDataReceived += new DataReceivedEventHandler( _process_OutputDataReceived );
}
void _process_OutputDataReceived( object sender, DataReceivedEventArgs e )
{
_currentOutput = eData;
BeginInvoke( _methodInvoker );
}
private void ShowOutput()
{
txtOutputText += _currentOutput + "\r\n";
}
private void btnStart_Click( object sender, EventArgs e )
{
try
{
StartProcess();
btnStartEnabled = false;
}
catch( Exception ex )
{
MessageBoxShow( exToString() );
}
}
private void btnOK_Click( object sender, EventArgs e )
{
if (_writer != null)
{
_writerWriteLine(txtInputText);
}
}
private void StartProcess()
{
ProcessStartInfo psi = new ProcessStartInfo( @"\bin\debug\Consoleexe" );
psiCreateNoWindow = true;
psiRedirectStandardInput = true;
psiRedirectStandardOutput = true;
psiUseShellExecute = false;
_processStartInfo = psi;
_processStart();
_writer = _processStandardInput;
_processBeginOutputReadLine();
}
}
}
将ConsoleRead和ConsoleReadLine的语句都改成从TextBox控件输入,将ConsoleWrite和ConsoleWriteLine相关的调用都改成给一个Label控件赋值,LabelText=xxx;
这样就行了
重写Form构造函数,可处理入参,并且在Form当中While探测异步翻译的执行结果。为了不显示窗体,在Form的构造函数最后执行SystemEnvironmentExit(0);来退出程序
以上就是关于C#的一个WinForm程序,调用一个console程序,该程序要求屏幕输入,如何由WinForm程序带出来全部的内容,包括:C#的一个WinForm程序,调用一个console程序,该程序要求屏幕输入,如何由WinForm程序带出来、C#如何将Console程序修改为WinForm程序、请教怎么修改为Console程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)