Vb.net RichTextBox创建一个空文件

Vb.net RichTextBox创建一个空文件,vb.net,save,richtextbox,Vb.net,Save,Richtextbox,我试图使用RichTextBox将报告文件保存到磁盘,但得到的是一个空文件 ReportRtb.Text = Report & Chr(9) & Source ReportRtb.SaveFile(FullReportPath, RichTextBoxStreamType.PlainText) 我不明白我做错了什么。 此函数是从线程调用的,是否相关?是的,此问题肯定与您使用的第二个线程有关,因为您无法从任何其他线程设置RichTextBox(或表单上的任何其他控件)的文本,但创

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

ReportRtb.Text = Report & Chr(9) & Source
ReportRtb.SaveFile(FullReportPath, RichTextBoxStreamType.PlainText)
我不明白我做错了什么。
此函数是从线程调用的,是否相关?

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

尝试使用以下代码

ReportRtb.Invoke(Sub
    ReportRtb.Text = Report & Chr(9) & Source
    ReportRtb.SaveFile(FullReportPath, RichTextBoxStreamType.PlainText)
End Sub)
使用
Invoke(…)
语句,您可以从创建控件的线程调用lambda(或委托子对象,但这里更容易调用lambda),因此这将正确设置文本,然后将其写入文件

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

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

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

 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

这里没有足够的代码告诉您任何事情meaningful@AFriend函数的另一部分是创建文件名路径。您需要吗?我们需要一个报告,其中应该包括如何生成
FullReportPath
,以及
Report
Source
是什么。谢谢您的回答。RTB不可见,我的意思是它不在GUI上。我在只由线程调用的函数中创建它。我还尝试从GUI上的按钮调用该函数,并得到相同的结果。我检查了RTB.Text属性,似乎没有问题。您是否尝试使用断点查看变量的内容,以及它们是否正确?还可以尝试StreamWriter解决方案,而不是RichTextBox,因为RichTextBox不是设计为在没有GUI的情况下运行的,它应该更快、更高效。好的,我现在看到了StreamWriter工作的评论。如果我的回答对你有效,我可以请你接受吗?