无法将文件添加到列表框... READ

时间:2013-04-10 19:26:03

标签: c# listbox environment appdata

我正在使用代码在列表框中显示环境变量“%appdata%”中的所有启动项 我需要帮助的代码中有一些错误.... 检查注释错误的代码

还有其他解决方案,但仍在使用%appdata%?

这是代码:

    private void readfiles()
    {
        String startfolder = Environment.ExpandEnvironmentVariables("%appdata%") + "\\Microsoft\\Windows\\Start Menu\\Programs\\Startup";
        foldertoread(startfolder);
    }

    private void foldertoread(string folderName)
    {
        FileInfo[] Files = folderName.GetFiles("*.txt"); // HERE is one error "Getfiles"
        foreach (var file in Directory.GetFiles(folderName))
        {
            startupinfo.Items.Add(file.Name); // here is another error "Name"

        }
    }

3 个答案:

答案 0 :(得分:2)

此行不起作用,因为folderName是一个字符串(并且没有GetFiles方法):

FileInfo[] Files = folderName.GetFiles("*.txt");

发生第二个错误,因为file变量是包含文件名的string。您无需致电file.Name,只需尝试以下操作:

startupinfo.Items.Add(file);

答案 1 :(得分:0)

我认为您不需要以下内容:

FileInfo[] Files = folderName.GetFiles("*.txt");

foreach循环将生成您需要的内容。 其次,file变量是一个字符串,而不是调用:

startupinfo.Items.Add(file.Name);

......请致电:

startupinfo.Items.Add(file);

最后,您可以使用字符串代替循环的var类型,并且可以指定文件类型过滤器:

foreach (string fileName in Directory.GetFiles(folderName, "*.txt"))

答案 2 :(得分:0)

string对象没有GetFiles()方法。试试这个:

string startfolder = Environment.GetFolderPath(Environment.SpecialFolder.Startup);

string[] files = Directory.GetFiles(startfolder, "*.txt");

foreach (string file in files)
{
   startupinfo.Items.Add(Path.GetFileNameWithoutExtension(file));
}

Path.GetFileNameWithoutExtension(file)只返回文件名而不是完整路径。