Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#visualstudio-I';我正在尝试读取一个文本文件,并将其显示在Richtextbox中并包含新行_C#_Visual Studio - Fatal编程技术网

C#visualstudio-I';我正在尝试读取一个文本文件,并将其显示在Richtextbox中并包含新行

C#visualstudio-I';我正在尝试读取一个文本文件,并将其显示在Richtextbox中并包含新行,c#,visual-studio,C#,Visual Studio,我正在尝试读取一个文本文件,并将其显示到Richtextbox中并包含新行。 假设我希望它读作: 你好 你好 你好 但它的意思是: 你好 这是我目前掌握的代码: private void btnView_Click(object sender, EventArgs e) { OpenFileDialog op = new OpenFileDialog(); op.InitialDirectory = "C:\\"; op.Filter = "Txt files (*.t

我正在尝试读取一个文本文件,并将其显示到Richtextbox中并包含新行。 假设我希望它读作:

你好

你好

你好

但它的意思是: 你好

这是我目前掌握的代码:

private  void btnView_Click(object sender, EventArgs e)
{
    OpenFileDialog op = new OpenFileDialog();
    op.InitialDirectory = "C:\\";
    op.Filter = "Txt files (*.txt)|*.txt|All Files (*.*)|*.*";
    op.FilterIndex = 2;

    if (op.ShowDialog() == DialogResult.OK)
    {
        textBox1.Text = op.FileName;
        string path = op.FileName;
        StringBuilder sb = new StringBuilder();
        using (StreamReader sr = new StreamReader(path)) 
        {
            while(sr.Peek() >= 0)
            {
                sb.Append(sr.ReadLine());
                Console.WriteLine("\r\n");
            }
        }

        richTextBox1.Text = sb.ToString();                
    }
}

StreamReader
行由
Environment.NewLine
分隔。如果您阅读了,您会注意到
ReadLine
不包含这些分隔符。如果要重新添加它们,请使用:

sb.Append(sr.ReadLine());
sb.Append(Environment.NewLine);
不要在WinForms应用程序中调用Console.WriteLine()。

更改行:

Console.WriteLine("\r\n");
致:


另一种方法是使用
文件
类的static
ReadAllText()
方法

您只需将路径传递给文本文件,它就会将所有文本(包括换行符)读入字符串并返回给您。然后,您可以将结果设置为
richTextBox1.Text
属性,以获得更清晰、更易于阅读的代码:

if (op.ShowDialog() == DialogResult.OK)
{
    textBox1.Text = op.FileName;
    richTextBox1.Text = File.ReadAllText(op.FileName);
}

另外:在记事本中查看文本确实包含文本,因此它正确地写入了文本文件,只是没有读取文本。StringBuilder类有几个附加文本的选项。您正在使用的一个,
Append()
只是附加文本。但是还有另一个,叫做
AppendLine()
,它也在末尾放了一个换行符。改用那一个,去掉
Console.WriteLine
。或者只调用
sb.AppendLine(sr.ReadLine())
if (op.ShowDialog() == DialogResult.OK)
{
    textBox1.Text = op.FileName;
    richTextBox1.Text = File.ReadAllText(op.FileName);
}