我尝试过使用: StreamWriter.WriteLine() StreamWriter.Write() File.WriteAllText()
但是所有这些方法都将文本框文本写入文件而不保留换行符和此类字符。我怎么能这样做呢?
编辑:
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);
}
}
我正在使用多行RichTextBox来执行此操作。
答案 0 :(得分:1)
要扩展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);
}
}
}
}
答案 1 :(得分:0)
也许这会有所帮助。来自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
只有\r\n
。如果你将这行代码放在你的函数中,你将得到你想要的结果:
string tbval = richTextBox1.Text;
tbval = tbval.Replace("\n", "\r\n");
对于这个问题应该有其他解决方案,看起来比这更好但是这个有快速的结果。