如何将RichTextBox中选中的文本保存到TXT文件?解决全量输出问题
解决RichTextBox选中文本无法保存为TXT的问题
你的问题出在代码里遍历了richTextBox1.Lines——这个属性会返回控件里的全部文本行,不管你有没有选中内容,所以自然会把所有文本都存进去。要只保存选中的部分,直接用richTextBox1.SelectedText就可以了,这才是专门获取选中内容的属性。
修改后的代码如下:
SaveFileDialog saveFiles = new SaveFileDialog(); saveFiles.DefaultExt = "*.txt"; saveFiles.Filter = "txt Files | *.txt"; // 先判断是否有选中的文本,避免保存空文件 if (!string.IsNullOrEmpty(richTextBox1.SelectedText) && saveFiles.ShowDialog() == DialogResult.OK) { using (StreamWriter sw = File.CreateText(saveFiles.FileName)) { // 直接写入选中的文本,它会保留原有的换行格式 sw.Write(richTextBox1.SelectedText); } }
这里还有两个实用优化:
- 用
using语句包裹StreamWriter,它会自动帮你释放资源,不用手动调用Flush()和Close(),代码更简洁安全。 - 先判断
SelectedText是否为空,避免用户没选内容就弹出保存对话框或者生成空文件。
如果你的需求是保存选中的整行(而非任意选中片段),可以通过richTextBox1.SelectionStart和richTextBox1.GetLineFromCharIndex()定位选中行的范围,但从你的描述来看,上面的代码已经能满足保存选中内容的需求。
内容的提问来源于stack exchange,提问作者JohnDown
相关产品推荐
相关产品推荐

