C# 如何将调试信息输出到RichTextBox?
我正在创建一个FTP客户端,希望通过输出调试信息将响应输出到RichTextBox 有人能帮我做这件事吗?谢谢C# 如何将调试信息输出到RichTextBox?,c#,richtextbox,system.diagnostics,C#,Richtextbox,System.diagnostics,我正在创建一个FTP客户端,希望通过输出调试信息将响应输出到RichTextBox 有人能帮我做这件事吗?谢谢 public FileARK() { InitializeComponent(); hostAddress.Text = "host"; UserName.Text = "foo"; Password.Text = "bar"; //FtpTrace.AddListener(new TextWriterTraceListener(response
public FileARK()
{
InitializeComponent();
hostAddress.Text = "host";
UserName.Text = "foo";
Password.Text = "bar";
//FtpTrace.AddListener(new TextWriterTraceListener(responseWindow.Text));
// Debug.WriteLine(responseWindow.Text);
}
private void Connect_Click(object sender, EventArgs e)
{
conn = new FtpClient();
conn.Host = hostAddress.Text;
conn.Credentials = new NetworkCredential(UserName.Text, Password.Text);
conn.Connect();
}
private void Disconnect_Click(object sender, EventArgs e)
{
conn.Disconnect();
}
private void responseWindow_TextChanged(object sender, EventArgs e)
{
}
您可以实现自己的,在app.config中配置,并动态尝试查找与配置中的名称匹配的richtextbox 您的类可以如下所示:
public class TextBoxListener : TraceListener
{
RichTextBox _box;
string _data;
public TextBoxListener(string initializeData)
{
_data = initializeData;
}
private bool Init()
{
if (_box != null && _box.IsDisposed )
{
// back to null if the control is disposed
_box = null;
}
// find the logger text box
if (_box == null)
{
// open forms
foreach (Form f in Application.OpenForms)
{
// controls on those forms
foreach (Control c in f.Controls)
{
// does the name match
if (c.Name == _data && c is RichTextBox)
{
// found one!
_box = (RichTextBox) c;
break;
}
}
}
}
return _box != null && !_box.IsDisposed;
}
public override void WriteLine(string message)
{
if (Init())
{
_box.Text = _box.Text + message + "\r\n";
}
}
public override void Write(string message)
{
if (Init())
{
_box.Text = _box.Text + message;
}
}
}
该类最重要的部分是Init
方法,该方法迭代所有openforms和所有控件,以查找与app.config中配置的名称匹配的richtextbox控件
要使用此类,请在app.config中配置跟踪,然后
类型是类的完全限定类型名(Namespace.Classname、AssemblyName),在initializeData中,您将在表单上添加richtextbox控件的名称。在我的示例应用程序中,它是loggerRTB
在您的应用程序中,您现在可以使用标准的跟踪
类:
Trace.WriteLine("Hello world");
请注意,TextBoxListener
仅在第一次调用Trace.WriteLine
时实例化
这种方法的好处之一是可以添加多个监听器,这些监听器可以写入不同的RichTextBox控件,即使是在单独的表单上(假设这些表单是打开的)。问题出在哪里?到目前为止您做了什么?我创建了一个ftp客户端,可以连接到ftp服务器,我在debug窗口中有对服务器输出的响应,但我想知道如何在应用程序运行时获取调试数据并将其输出到RichTextBox中。也许你应该向我们展示你迄今为止的代码。在google上搜索如何使用
debug.WriteLine
RichTextBox对于你想要的东西来说可能有些过分,但是您要调用的属性是myColrichTextBox.Document=myColdDocument。看这里:谢谢你!,我的一切都按我需要的方式工作:)