各位前辈,在下想请教一下可否在richtextbox/textbox里想Console.WriteLine()一样带格式(如以16进制输出,固定输出几位)的输出。
例如在控制台程序下的代码:
 FileStream fs = new FileStream("1.wav",FileMode.Open,FileAccess.Read);
            int tmp,cnt,row=0,col=16;
            tmp=fs.ReadByte();
            cnt = 1;
            while (tmp != -1)
            {
                if (cnt == 1)
                    Console.Write("{0:X8}  ", row * col);
                Console.Write("{0:X2} ",tmp);
                tmp = fs.ReadByte();
                cnt++;
                if (cnt == col+1)
                {
                    Console.WriteLine();
                    cnt = 1;
                    row++;
                }
            }
如何在richtextbox/textbox实现输出。

解决方案 »

  1.   

    用string.Format。public partial class Form1 : Form
    {
        public Form1()
        {
            TextBox consoleTextBox = new TextBox()
            {
                Multiline = true,
                Font = new Font(FontFamily.GenericMonospace, 9),
                Dock = DockStyle.Fill,
            };
            this.Controls.Add(consoleTextBox);        MyConsole.OnWrite = str =>
            {
                consoleTextBox.BeginInvoke((Action)delegate { consoleTextBox.AppendText(str); });
            };    }    protected override void OnActivated(EventArgs e)
        {
            base.OnActivated(e);
            MyConsole.WriteLine("hello");
            MyConsole.Write("{0:X8}", 123);
            for(int i=0; i<4; i++) MyConsole.Write(" {0:X2}",i);
        }
    }public static class MyConsole
    {
        public static Action<string> OnWrite {get; set;}
        public static void Write(string format, params object[] args)
        {
            Action<string> onWrite = OnWrite;
            if(onWrite != null) onWrite(string.Format(format, args));
        }
        public static void WriteLine(string format, params object[] args)
        {
            Write(format, args);
            Write(Environment.NewLine);
        }
    }
      

  2.   

    请问如何可以在指定richtextbox(拖进来的)里现实呢?我自己改了一下但是一直有问题
      

  3.   

    Winform有个MaskedTextBox控件专门输出各种类型的字符串,可以自由设置输出规范!
      

  4.   

    我刚才是接触做windows的应用程序,可否具体指点一下?
      

  5.   

    你把他所有添加控件的代码去掉,控件变量名换成你的就是了。注意在InitializeComponent()函数后调用控件相关代码。
      

  6.   

    请问2楼代码中下面两部分的调用关系是什么?求前辈指点
    MyConsole.OnWrite = str =>
    {
         consoleTextBox.BeginInvoke((Action)delegate { consoleTextBox.AppendText(str); });
    };
    protected override void OnActivated(EventArgs e)
    {
        base.OnActivated(e);
        MyConsole.WriteLine("hello");
        MyConsole.Write("{0:X8}", 123);
        for(int i=0; i<4; i++) MyConsole.Write(" {0:X2}",i);
    }