所以我正在尝试使用已放入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();
}
答案 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();
}