我用C#编写了一个记事本程序,其中一个是进行记事本的“打开文件”操作:
附代码:
private void 保存SToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
saveFileDialog1.Filter = "文本文件|*.txt|word文档|*.doc"; //这段代码要在if语句之前添加,否则保存文件格式时会出现无格式状况;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
StreamWriter sw = new StreamWriter(saveFileDialog1.FileName, true,Encoding.GetEncoding("gb2312"));
sw.Write(richTextBox1.Text);
this.Text = saveFileDialog1.FileName;
sw.Close();
richTextBox1.Text = string.Empty;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
但是进行对txt文件进行追加操作时出现以下情况------附图:
请问那几个“小黑框”我编写的时候并没有,但是打开后却出现了,请问如何解决?
再补充下,文档原本应该是这样:
没太懂,麻烦能再详细一点吗?举个例子也行
追答你把richTextBox1.Text赋值给一个string类型的变量,在那个变量的地方设置断点,看看变量是什么就知道是怎么回事了。
try
{
saveFileDialog1.Filter = "文本文件|*.txt|word文档|*.doc"; //这段代码要在if语句之前添加,否则保存文件格式时会出现无格式状况;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
StreamWriter sw = new StreamWriter(saveFileDialog1.FileName, true, Encoding.GetEncoding("gb2312"));
for (int i = 0; i < richTextBox1.Lines.Length; i++ )
{
sw.Write(richTextBox1.Lines[i]);
sw.Write("\r\n");
}
this.Text = saveFileDialog1.FileName;
sw.Close();
richTextBox1.Text = string.Empty;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
你试试这个吧,我刚刚改的。
重要的是windows下的换行是\r\n,而你RichTextBox的换行为\n,因为这点,它把每一行发入Lines中。
真的可以!!!!!真心请教这是什么原因造成的呢?
追答重要的是windows下的换行是\r\n,而你RichTextBox的换行为\n,因为这点,它把每一行发入Lines中。Windows下记事本的换行是\r\n,但是你是看不到这两个字符的,而RichTextBox的换行为\n,这样拿到记事本下看,自然就成了小黑框,一种乱码。下次记得就行了。
那个不是乱码,这位网友,而是空格?我现在就想把空格都给去掉,不会弄,求解!谢谢