0

我正在使用下面的函数将项目添加到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);
     }
 }
4

1 回答 1

1

你的问题在这里:

    foreach (var item in filesFound)

您引用的似乎是一个名为 filesFound 的全局变量,而不是files传递给函数的变量。

于 2017-02-25T16:05:30.447 回答