Stream Reader(从 .txt 文件中提取数据以显示在 listBox 中)

Stream Reader (Pull data from .txt file to be displayed in listBox)

我有一个 .txt 文件,在 form2 中,我正在写信给它。我现在需要调用 .txt 文件,然后将每一行字符显示到 form3 上的列表框中。但我收到错误。

Error1: 'string' does not contain a definition for 'Add' and no extension method 'Add' accepting a first argument of type 'string' could be found (are you missing a using directive or an assembly reference?)

Error2: Cannot convert method group 'ReadLine' to non-delegate type 'string'. Did you intend to invoke the method?

旁注 文件名为“data.txt”,表格 3 名为“Stats ".

public partial class Stats : Form
{
    public Stats()
    {
        InitializeComponent();
    }

    private void Stats_Load(object sender, EventArgs e)
    {
        StreamReader StreamIn = File.OpenText(@"data.txt");
        string Record = StreamIn.ReadLine();

        while (Record != null)
        {
            listBox1.Text.Add(Record);
            Record = StreamIn.ReadLine;
        }
        StreamIn.Close();
    }
}

listBox1.Textstring 类型。 String 没有 Add 函数。 属性 Text 表示所选项目,而不是项目集合。您可以将项目添加到 Items 属性",如下所示:

listBox1.Items.Add(Record);

其次,所有方法必须以 ( 零个或多个参数和 ):

结尾
Record = StreamIn.ReadLine();

你在读取记录的代码行中正确地完成了。

* 编辑(在 Dmitry Bychenko 的评论之后)*

另一种更快的方法是:

private void Stats_Load(object sender, EventArgs e)
{
    listBox1.Items.AddRange(File.ReadAllLines(@"data.txt"));
}

应该是:

listBox1.Items.Add(Record)

你需要使用,

listBox1.Text += Record; // append

.Add() 函数是集合中的函数,即 ListIEnumerable 等。您不能在字符串中使用它。

或者,您可能想添加一个新项目?

listBox1.Items.Add(Record);

这会为您解决问题。

为什么不干脆

listBox1.Text = File.ReadAllText(@"data.txt");

没有任何 Stream(应该包含在 using 中)?或者

listBox1.Items.AddRange(File.ReadAllLines(@"data.txt"));

Stream 实现可能是这样的:

   using (StreamReader StreamIn = File.OpenText(@"data.txt")) { // <- using!
     for (String Record = StreamIn.ReadLine(); Record != null; Record = StreamIn.ReadLine()) {
       listBox1.Items.Add(Record);
     }
   }

在 ReadLine 末尾添加括号:

Record = StreamIn.ReadLine();

理想情况下,您应该使用 using 语句。您可以使用 EndOfStream 而不是执行多个 readlines

using (StreamReader StreamIn = File.OpenText(@"data.txt"))
{
   while (!StreamIn.EndOfStream)
       listBox1.Text.Add(StreamIn.ReadLine());
}
    using (StreamReader sr = new StreamReader(@"data.txt"))
        {
            while (sr.Peek() >= 0)
            {
                listBox1.Items.Add(sr.ReadLine());
            }
        }

https://msdn.microsoft.com/it-it/library/system.io.streamreader.readline(v=vs.110).aspx