我尝试使用:streamwriter.writeline()streamwriter.write()file.writealText()
但是所有这些方法都将文本框文本写入文件,而无需保持新线和此类字符。我该怎么做?
编辑:
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
SaveFileDialog s = new SaveFileDialog();
s.FileName = "new_doc.txt";
s.Filter = "Text File | *.txt";
if (s.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
File.WriteAllText(s.FileName, richTextBox1.Text);
}
}
我正在使用Multiline RichTextbox来执行此操作。
在Tzortzik的答案上展开,如果您使用StreamWriter并简单地访问RichTextbox的Lines属性,它将为您完成工作:
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
SaveFileDialog s = new SaveFileDialog();
s.FileName = "new_doc.txt";
s.Filter = "Text File | *.txt";
if (s.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
using (StreamWriter sw = new StreamWriter(s.FileName))
{
foreach (string line in richTextBox1.Lines)
{
sw.WriteLine(line);
}
}
}
}
也许这会有所帮助。来自StreamWriter
类文档。
string[] str = String.Split(...);
// Write each directory name to a file.
using (StreamWriter sw = new StreamWriter("CDriveDirs.txt"))
{
foreach (DirectoryInfo dir in cDirs)
{
sw.WriteLine(dir.Name);
}
}
这个想法是从文本框中获取文本,然后在n
char之后将其拆分。结果将是一个字符串,每个包含一行的元素。
以后的编辑:
问题是剩下的返回马车。如果您使用调试器查看代码,您会发现您的字符串在新行中仅具有n
而不是rn
。如果将此代码行放入功能中,则将获得所需的结果:
string tbval = richTextBox1.Text;
tbval = tbval.Replace("n", "rn");
应该还有其他解决方案,看起来比这更好,但是这个问题的结果很快。