我正在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;
}
答案 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
其他资源
打开一个文本文件,将文件的所有行读入字符串数组, 然后关闭文件。
??运算符称为空值运算符。它返回 如果操作数不为null,则为左侧操作数;否则为false。否则返回 右操作数。
一元递增运算符++将其操作数递增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;