用文本文件填充列表框

时间:2015-04-15 08:35:29

标签: c# wpf listbox streamreader

所以我正在尝试使用已放入txt文件的名称填充列表框。 当我使用Console.WriteLine(naam)时,它实际上显示了文件中的名称,但我无法将它们放入列表框中。有谁知道这个问题的解决方案?感谢adventage。

public void PopulateList( ListBox list, string file)
{
        string naam;
        string sourcepath =  Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
        string myfile = System.IO.Path.Combine(sourcepath, file);
        StreamReader reader = File.OpenText(myfile);
        naam = reader.ReadLine();
        while (naam != null)
        {
            list.Items.Add(naam);
            list.Items.Add(Environment.NewLine);
            naam = reader.ReadLine();
        }
        reader.Close();
}

3 个答案:

答案 0 :(得分:0)

查看this

StreamReader sr = new StreamReader("youfilePath");
string line = string.Empty;
try
{
    //Read the first line of text
    line = sr.ReadLine();
    //Continue to read until you reach end of file
    while (line != null)
    {
        list.Items.Add(line);
        //Read the next line
        line = sr.ReadLine();
    }

    //close the file
    sr.Close();
}
catch (Exception e)
{
    MessageBox.Show(e.Message.ToString());
}
finally
{
    //close the file
    sr.Close();
}

答案 1 :(得分:0)

您可以使用File.ReadLines来使这更好一点:

string sourcepath =  Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
string myfile = Path.Combine(sourcepath, file);

var items = File.ReadAllLines(myfile)
    .Select(line => new ListItem(line));

List.Items.AddRange(items);

答案 2 :(得分:0)

首先请使用MVVM开发任何wpf应用程序。像这样操作后面的代码中的UI控件并不好。使用适当的绑定。

如果我必须解决这个问题,我会创建像

这样的字符串集合
 public ObservableCollection<string> Names { get; set; }

并将其绑定到ListBox,如

 <ListBox x:Name="NamesListBox" ItemsSource="{Binding Names}"/>

然后在我的Window的构造函数中,我将初始化Names并设置Window的DataContext并更新PopulateList方法,如下所示:

    public MainWindow()
    {
        InitializeComponent();
        Names = new ObservableCollection<string>();
        DataContext = this;
        PopulateList("C:\names.txt");
    }

    public void PopulateList(string file)
    {
        string naam;
        string sourcepath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
        string myfile = System.IO.Path.Combine(sourcepath, file);
        StreamReader reader = File.OpenText(myfile);
        naam = reader.ReadLine();
        while (naam != null)
        {
            Names.Add(naam);
            naam = reader.ReadLine();
        }
        reader.Close();
    }