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.Text
是 string
类型。 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()
函数是集合中的函数,即 List
、IEnumerable
等。您不能在字符串中使用它。
或者,您可能想添加一个新项目?
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
我有一个 .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.Text
是 string
类型。 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()
函数是集合中的函数,即 List
、IEnumerable
等。您不能在字符串中使用它。
或者,您可能想添加一个新项目?
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