我使用以下功能将项目添加到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);
}
}
答案 0 :(得分:1)
你的问题在这里:
foreach (var item in filesFound)
您正在引用一个名为filesFound的全局变量,
而不是传递给函数的变量files
。
答案 1 :(得分:0)
在以下行设置断点:
dataGridView1.Rows.Add(getTitle(item), getArtist(item), getDuration(item), item);
断点是否会被击中?