【问题标题】:Console-like text control?类似控制台的文本控件?
【发布时间】:2010-07-25 19:47:21
【问题描述】:

我正在寻找一个可以像控制台窗口一样输出文本的 winforms 控件(输出附加到底部、颜色格式等),很像大多数 IDE 中的“输出”窗口。

我尝试自己制作一个,但它没有按我想要的方式工作,所以我想知道是否有一些现有的控制。

这是一个开源项目。

【问题讨论】:

  • .Net Windows 控制台应用程序无法完成这项工作?你想做什么却不能用其中之一做?
  • 你找到你要找的东西了吗?
  • 很遗憾没有,看来我必须编写自己的控件才能获得我想要的功能。

标签: .net winforms controls


【解决方案1】:

我写了一个简单的控件。但它不适用于颜色(它源自不支持颜色的 textWriter)。

internal class TextBoxWriter : TextWriter {
    TextBox _output;

    public TextBoxWriter(TextBox output) {
        _output = output;
    }

    public override void WriteLine(string value) {
        Write(value + System.Console.Out.NewLine);
    }

    public override void Write(string value) {
        if(_output.InvokeRequired) {
            _output.BeginInvoke((Action<string>)Write, value);
        } else {
            _output.AppendText(value);
        }
    }

    public override void Write(char value) {
        Write(value.ToString());
    }

        public override Encoding Encoding {
            get { return Encoding.UTF8; }
        }
    }

用法:

//designer code
private System.Windows.Forms.TextBox outputTextBox;
this.outputTextBox = new System.Windows.Forms.TextBox();

//user code
var _textWriter = new TextBoxWriter();
System.Console.SetOut(_textWriter);
Console.WriteLine("hello");   //this will be show in the outputTextBox

【讨论】:

  • 我以前在几个应用程序中做过类似的事情,但你的实现要干净得多。谢谢!而且,我可以很容易地将控制台重定向到不同的作者,这对我来说是个新闻。这很棒。
【解决方案2】:

RichTextBox 控件(内置)怎么样?或者也许你可以使用 ListView,因为它对 irc 很有用。尤其是ObjectListView提供了很多可能性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多