铁蟒 |将输出重定向到文本框
IronPython | Redirect Output To Textbox
好的,假设我在 C# 中使用 IronPython 执行脚本:
ScriptEngine engine = Python.CreateEngine();
string Script = textBox1.Text();
engine.Execute(Script);
现在假设脚本是:
print("Hello")
VS 控制台中的输出:你好
我在这里想要实现的是将该输出重定向到 C# 中的 TextBox。我尝试了以下方法但没有用:
class TextBoxWriter : TextWriter
{
private RichTextBox _textBox;
public TextBoxWriter(RichTextBox textbox)
{
_textBox = textbox;
}
public override void Write(char value)
{
base.Write(value);
_textBox.AppendText(value.ToString());
}
public override System.Text.Encoding Encoding
{
get { return System.Text.Encoding.UTF8; }
}
}
Form1_Load:
engine.Runtime.IO.RedirectToConsole();
TextWriter _writer = TextWriter.Synchronized(new TextBoxWriter(textBox1));
Console.SetOut(_writer);
我的代码中只有它,它对我来说很实用。
engine.Runtime.IO.RedirectToConsole();
Console.SetOut(new TextBoxWriter(textBox1));
好的,假设我在 C# 中使用 IronPython 执行脚本:
ScriptEngine engine = Python.CreateEngine();
string Script = textBox1.Text();
engine.Execute(Script);
现在假设脚本是:
print("Hello")
VS 控制台中的输出:你好 我在这里想要实现的是将该输出重定向到 C# 中的 TextBox。我尝试了以下方法但没有用:
class TextBoxWriter : TextWriter
{
private RichTextBox _textBox;
public TextBoxWriter(RichTextBox textbox)
{
_textBox = textbox;
}
public override void Write(char value)
{
base.Write(value);
_textBox.AppendText(value.ToString());
}
public override System.Text.Encoding Encoding
{
get { return System.Text.Encoding.UTF8; }
}
}
Form1_Load:
engine.Runtime.IO.RedirectToConsole();
TextWriter _writer = TextWriter.Synchronized(new TextBoxWriter(textBox1));
Console.SetOut(_writer);
我的代码中只有它,它对我来说很实用。
engine.Runtime.IO.RedirectToConsole();
Console.SetOut(new TextBoxWriter(textBox1));