C# 使用StreamReader逐行读取列表框中的项目
我正在尝试制作一个可以逐行阅读的StreamReader,然后,每一行都会成为我列表框中的一个项目。。。目前,我的代码被销毁了。现在的问题是它只放文本文件的第一行。此外,如果我在代码开头删除以下代码,当我第二次加载它时,它会工作,但第一行有两次,一次在末尾,一次在开头: 行。清除() 这是:C# 使用StreamReader逐行读取列表框中的项目,c#,listbox,line,streamreader,readline,C#,Listbox,Line,Streamreader,Readline,我正在尝试制作一个可以逐行阅读的StreamReader,然后,每一行都会成为我列表框中的一个项目。。。目前,我的代码被销毁了。现在的问题是它只放文本文件的第一行。此外,如果我在代码开头删除以下代码,当我第二次加载它时,它会工作,但第一行有两次,一次在末尾,一次在开头: 行。清除() 这是: public void loadViewlist_But_Click(object sender, EventArgs e) { if (listBox1.DataSourc
public void loadViewlist_But_Click(object sender, EventArgs e)
{
if (listBox1.DataSource == lines)
{
listBox1.DataSource = null;
lines.Clear();
}
listBox1.Items.Clear();
OpenFileDialog selectViewlist = new OpenFileDialog();
selectViewlist.AddExtension = true;
selectViewlist.Filter = "ImageViewerList Files|*.imlist";
selectViewlist.FilterIndex = 1;
selectViewlist.RestoreDirectory = true;
if (selectViewlist.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
using (StreamReader viewListReader = new StreamReader(selectViewlist.FileName))
{
int counter = 0;
string line;
while ((line = viewListReader.ReadLine()) != null)
{
lines.Add(line);
listBox1.DataSource = lines;
counter++;
}
}
}
}
如果有人能向我解释并帮助我,我将不胜感激。在while循环之后执行“listBox1.DataSource=lines”,而不是在while循环中。最好在使用块之外进行。在您的示例中,当第一次将“行”分配给数据源时,它只包含一项。listbox将忽略连续的“listBox1.DataSource=lines”,因为它已经将“lines”作为数据源。此外,由于列表框仅在成功分配数据源时更新,因此对“行”的进一步直接操作不会导致列表框更新。@elgonzo好的,谢谢。@elgonzo非常感谢,它似乎正在工作。现在我明白了。非常感谢。