C# streamwrite重写不仅仅是“重写”;写下;功能
这是我的textwriter类的当前代码:C# streamwrite重写不仅仅是“重写”;写下;功能,c#,console,overriding,C#,Console,Overriding,这是我的textwriter类的当前代码: using System; using System.Text; using System.IO; using System.Windows.Forms; namespace ConsoleRedirection { public class TextBoxStreamWriter : TextWriter { TextBox _output = null; public TextBoxStreamW
using System;
using System.Text;
using System.IO;
using System.Windows.Forms;
namespace ConsoleRedirection
{
public class TextBoxStreamWriter : TextWriter
{
TextBox _output = null;
public TextBoxStreamWriter(TextBox output)
{
_output = output;
}
public override void Write(char value)
{
base.Write(value);
_output.AppendText(value.ToString());
}
public override void Write(string value)
{
_output.AppendText(value);
}
public override Encoding Encoding
{
get { return Encoding.UTF8; }
}
}
}
正如您所看到的,重写写函数很好,但我希望能够重写从“清除”到“颜色”设置的所有内容。我试图添加一个明确的覆盖,但它说没有什么可以覆盖
如何覆盖System.Console中需要的所有功能?仅仅因为TextWriter不包含清除或颜色设置功能。
检查。
尝试在不重写的情况下创建新方法,如:
public void Clear()
{
_output.Clear();
}
如果您试图编辑文本框内容,请尝试以下代码
using System;
using System.Text;
using System.IO;
using System.Windows.Forms;
namespace ConsoleRedirection
{
public class TextBoxStreamWriter
{
TextBox _output = null;
public TextBoxStreamWriter(ref TextBox output)
{
_output = output;
}
public void Write(char value)
{
_output.AppendText(value.ToString());
}
public void Write(string value)
{
_output.AppendText(value);
}
public Encoding Encoding
{
get { return Encoding.UTF8; }
}
public void clear()
{
_output.Clear();
}
public void textColor(System.Drawing.Color color)
{
_output.ForeColor = color;
}
}
}
以及创建类的新实例
ConsoleRedirection.TextBoxStreamWriter tbxw = new ConsoleRedirection.TextBoxStreamWriter(ref textbox1);
当我在控制台上尝试此操作时。Clear,它给我带来了一个错误。因为您使用的是winform,而在winform中您无法清除控制台(如我所知)。老实说,Console.Clear()是一个实际的命令,但在您的解决方案之后,我尝试的是将文本框文本设置为“”,但仍然不起作用。请使用控制台。Clear()如果您直接从表单使用,它将抛出一个io错误,就像您面临的错误一样,因为它已经被其他层使用。所以实际上您不能使用console.clear()。这就是我试图覆盖它的原因。与文本编写器类处理Console.Write的方式相同,我希望Console.Clear函数也能这样做。同样,这不起作用。它抛出:System.Reflection.TargetInvocationException:异常已被调用的目标抛出。-->System.IO.IOException:句柄无效。我不知道您为什么会出现此错误,我会尝试此代码并像charm一样工作。尝试下载此代码,看看是否需要vs2015。是的,但是你用的方法不同。我使用了_writer=newtextboxstreamwriter(txtConsole);控制台放线(_-writer);Console.WriteLine(“\n正在将输出重定向到文本框”);