用流程输出更新文本框
本文关键字:更新 文本 输出 程输出 | 更新日期: 2023-09-27 18:02:11
我正在尝试用bat文件的输出更新文本框。
在一个按钮点击,我运行我的bat文件。
{
proc = new Process();
proc.StartInfo.FileName = @"E:'comm.bat";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
proc.EnableRaisingEvents = true;
proc.StartInfo.CreateNoWindow = true;
proc.ErrorDataReceived += DataReceived;
proc.OutputDataReceived += DataReceived;
proc.Start();
proc.BeginErrorReadLine();
proc.BeginOutputReadLine();
proc.WaitForExit();
}
和
void DataReceived(object sender, DataReceivedEventArgs e)
{
if (e.Data != null)
{
textBox1.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new SetText(UpdateText(e.Data)));
}
}
和
public delegate void SetText();
public void UpdateText(String str)
{
textBox1.AppendText = str;
}
e.Data
包含我要在TextBox
中更新的字符串。如何将e.Data
传递给UpdateText
我得到错误
错误CS1656:不能分配给'AppendText',因为它是一个'方法'组织"
错误CS0149:方法名称期望
我怎样才能使它工作?由于
Dispatcher。BeginInvoke在与Dispatcher
相关联的线程上异步执行指定的委托和指定的参数数组。你做这件事的方法不对。试试这个
void DataReceived(object sender, DataReceivedEventArgs e)
{
if (e.Data != null)
{
textBox1.Dispatcher.BeginInvoke(new SetText(UpdateText), DispatcherPriority.Normal, e.Data); }
}
AppendText是一个方法,这就是你得到错误的原因。如果你想给字符串赋值,你应该这样做:
textBox1.Text = str;
:
textBox1.AppendText(str);
您尝试在调度程序上调用方法的方式是错误的。在摆弄WPF
之前,你需要投入更多的精力来学习C#
的基础知识。尽管如此,错误
错误CS1656:不能分配给'AppendText',因为它是一个'方法组'
可以用Text
代替AppendText
来解析:
textBox1.Text = str;
误差错误CS0149:方法名称期望
可以用
解析textBox1.Dispatcher.BeginInvoke(DispatcherPriority.Normal,
new Action(() => UpdateText(e.Data)),
DispatcherPriority.Normal);
你不需要声明新的委托类型