在这段代码:
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);
}
}中的:
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);
}
是怎样的一个调用关系?另外,假如我想利用上面的方法在两个TextBox输出不同的内容的话该怎么办?
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);
}
}中的:
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);
}
是怎样的一个调用关系?另外,假如我想利用上面的方法在两个TextBox输出不同的内容的话该怎么办?
MyConsole.OnWrite 这个事lambda表达式
第二个是个override函数
2、在两个TextBox输出不同的内容,将下面的代码copy一份不就可以了
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); });
};