RichTextBox 创建一个空文件

RichTextBox create an empty file

我正在尝试使用 RichTextBox 将报告文件保存到磁盘,但得到的是一个空文件。

ReportRtb.Text = Report & Chr(9) & Source
ReportRtb.SaveFile(FullReportPath, RichTextBoxStreamType.PlainText)

我不明白我做错了什么。 这个Function是从一个Thread调用的,可以关联吗?

是的,这个问题肯定与您使用的第二个线程有关,因为您不能从创建它的线程以外的任何其他线程设置 RichTextBox(或表单上的任何其他控件)的文本。

尝试使用以下代码。

ReportRtb.Invoke(Sub
    ReportRtb.Text = Report & Chr(9) & Source
    ReportRtb.SaveFile(FullReportPath, RichTextBoxStreamType.PlainText)
End Sub)

使用 Invoke(...) 语句,您可以从创建控件的线程调用 lambda(或委托子,但 lambda 在这里更容易),因此这将正确设置文本,然后将其写入文件。

如果这不能解决问题,请使用 Console.WriteLine(...) 或任何其他日志记录/调试输出工具检查 ReportSource 变量的内容。

如果这也不起作用,请检查(使用断点)函数是否被调用,如果是,代码在哪里停止工作。

如果所有这些都失败了,请考虑实现您自己的保存代码,因为您只使用 RichTextBox 来编写纯文本。使用以下代码可以更高效、更快速地完成此操作:

 Dim sw As New StreamWriter(FullReportPath)
 sw.Write(Report & Chr(9) & Source)
 sw.Close() 'Never forget that because if you forget it, the file won't be written, too