我正在使用下面的函数将项目添加到DataGridView
.
void addFiles(List<string> files)
{
foreach (var item in filesFound)
{
if (File.Exists(item))
{
fileList.Add(item);
MessageBox.Show(item);
string p = GetFolderPath(Personal) + @"\Music Database\";
Directory.CreateDirectory(p);
string file="";
try
{
StreamReader read = new StreamReader(p + "musicdatabase.txt");
file = read.ReadToEnd();
read.Close();
}
catch (Exception e)
{
if (e.ToString().Contains(""))
{
//add error code here later
}
}
StreamWriter write = new StreamWriter(p + "musicdatabase.txt");
write.WriteLine(file + item);
write.Close();
dataGridView1.Rows.Add(getTitle(item), getArtist(item), getDuration(item), item);
}
else
{
//add file not found error code here
}
}
}
该功能工作正常。它完美地添加了细节。getTitle();
,getArtist();
并getDuration();
照他们说的做。他们使用 TagLib# 来获取音频文件的详细信息。音频文件的文件路径被写入用户文档中的文本文件。
加载表单时出现问题:我将文本文件作为一个整体读取,将每一行放入List<string> textlist = new List<string>();
. 这可以。该列表包含每一行。然后我运行addFiles(textlist);
。我启动程序并加载,但没有添加到DataGridView
.
我有一种感觉,这可能与触发 Form_Load 时可能未加载的事实有关。
private void Form1_Load(object sender, EventArgs e)
{
string p = GetFolderPath(Personal) + @"\Music Database\musicdatabase.txt";
//MessageBox.Show(p);
//MessageBox.Show(File.Exists(p).ToString());
if (File.Exists(p))
{
string[] text = File.ReadAllLines(p);
List<string> textlist = new List<string>();
textlist = text.ToList();
// -- THIS PROVES THE textlist LIST CONTAINS ITEMS --
//foreach (var item in textlist)
//{
//MessageBox.Show(item);
//MessageBox.Show(textlist[0]);
//}
//THIS IS THE PROBLEM
addFiles(textlist);
}
}