各位前辈,在下想请教一下可否在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实现输出。
例如在控制台程序下的代码:
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实现输出。
{
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);
}
}
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);
}