RichTextBox创建一个空文件

时间:2017-09-05 14:07:59

标签: vb.net save richtextbox

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

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

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

1 个答案:

答案 0 :(得分:1)

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

尝试使用以下代码。

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

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

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

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

如果所有这些都失败了,请考虑实现自己的保存代码,因为您只使用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