如何逐行读取文件并打印到文本框c#

时间:2019-01-04 07:27:45

标签: c# windows-forms-designer streamreader

我正在Windows窗体应用程序上工作,希望从本地计算机上获取文本文件,并让该应用程序读取文本文件,并将文件中的每一行文本显示到应用程序上的文本框中。我想按一下表单上的按钮,并显示文本文件的第一行,然后再次按按钮,并显示第二行,等等。我一直在寻找实现此目的的方法,并且发现StreamReader将可能是我想要实现的最佳选择。

我目前有以下代码,但似乎将每一行打印到一行上。如果有人能看到原因,将不胜感激,相信它很小。

private void btnOpen_Click(object sender, EventArgs e)
{
    string file_name = "G:\\project\\testFile.txt";
    string textLine = "";

    if (System.IO.File.Exists(file_name) == true)
    {
        System.IO.StreamReader objReader;
        objReader = new System.IO.StreamReader(file_name);

        do
        {
            textLine = textLine + objReader.ReadLine() + "\r\n";
        } while (objReader.Peek() != -1);

        objReader.Close();
    }
    else
    {
        MessageBox.Show("No such file " + file_name);
    }

    textBox1.Text = textLine;
}

4 个答案:

答案 0 :(得分:6)

我将通过以下方式进行操作:

您正在使用Windows窗体,因此您有一个Form类作为主类。

在本课程中,我将定义:

private string[] _fileLines;
private string _pathFile;
private int _index = 0;

在构造函数中我会做

_fileLines = File.ReadAllLines(_pathFile);

然后在按钮单击事件处理程序中执行以下操作:

textBox1.Text = _fileLines[_index++];

答案 1 :(得分:2)

给出

private string[] lines;
private int index =0;

点击事件

// fancy way of intializing the lines array
lines = lines ?? File.ReadAllLines("somePath");

// sanity check 
if(index < lines.Length)
   TextBox.Text = lines[index++]; // index++ increments after use

其他资源

File.ReadAllLines Method

  

打开一个文本文件,将文件的所有行读入字符串数组,   然后关闭文件。

?? Operator (C# Reference)

  

??运算符称为空值运算符。它返回   如果操作数不为null,则为左侧操作数;否则为false。否则返回   右操作数。

++ Operator (C# Reference)

  

一元递增运算符++将其操作数递增1。   支持两种形式:后缀增量运算符x ++和   前缀增量运算符++ x。

更新

  

如果我要不断用新行更新文本文件,我   想要单击按钮逐行阅读,我将如何   去那个吗?

您只能在行中使用局部变量,并且每次都只读取文件

var lines = File.ReadAllLines("somePath");
if(index < lines.Length)
   TextBox.Text = lines[index++];

答案 2 :(得分:1)

您可以通过以下方式逐行阅读文本文件:

public int buttonClickCounter = 0;
private void button1_Click_1(object sender, EventArgs e)
{   
   List<string> fileContentList = new List<string>();
   string fileInfo = "";
   StreamReader reader = new StreamReader("C://Users//Rehan Shah//Desktop//Text1.txt");
   while ((fileInfo = reader.ReadLine()) != null)
   {
      fileContentList.Add(fileInfo);
   }

   try
   {
      listBox1.Items.Add(fileContentList[buttonClickCounter]);
      buttonClickCounter++;
   }
   catch (Exception ex)
   {
      MessageBox.Show("All Contents is added to the file.");
   }
}

答案 3 :(得分:-1)

textLine = textLine + objReader.ReadLine() + "\r\n";

替换为以下代码

textLine = textLine + objReader.ReadLine() + Environment.NewLine;