Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# streamwrite重写不仅仅是“重写”;写下;功能_C#_Console_Overriding - Fatal编程技术网

C# streamwrite重写不仅仅是“重写”;写下;功能

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

这是我的textwriter类的当前代码:

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正在将输出重定向到文本框”);