在重新填充期间替换 listBox 项目

Replacing listBox items during repopulation

我正在构建一个联系人管理器程序,我有一个按钮,按下该按钮会更新姓名列表框。不幸的是,我希望我的用户不会总是在关闭程序之前输入名字。我决定让列表中的新联系人在输入姓名之前显示为随机数字,因此我的一些项目将是数字,一些将是姓名。不过,我似乎无法显示名称。我一直将名称作为字符串存储在包含唯一随机数的文件夹内的文本文件中。我想要的是能够将所有文件夹名称加载到列表中,然后检查名称是否与该项目相关联,如果是,则将数字替换为相应的名称。下面的代码是我在被难住之前得到的。

private void button5_Click(object sender, EventArgs e)
{
    //populate the list of people
    listBox1.Items.Clear();
    string[] dirs = Directory.GetDirectories(@"C:\PersonalManager\");
    foreach (string dir in dirs)
    {
        //replace numbered items with names
        for (int i = 0; i < listBox1.Items.Count; i++)
        {
            String Text = Convert.ToString(listBox1.Items[i]);
            Text = Text.Replace(File.ReadAllText(@"C:\PersonalManager\"+listBox1.Items[i]+@"\first.txt")); //first.txt is the file containing the name
            listBox1.Items[i] = Text;
        }
        listBox1.Items.Add(Path.GetFileName(dir));
    }
}

我也很确定那里有一个过载错误,因为 Visual Studio 拒绝编译它。也许我应该以不同的方式解决这个问题?你们有什么建议吗?我已经搜索了 Google 和 Bing 但还没有弄清楚我做错了什么。对不起,如果我的代码一团糟,我是第一次。

P.S。我是初学者,所以我不能时不时地在没有注释的情况下思考太多代码。

我很确定这一行破坏了您的代码:

Text = Text.Replace(File.ReadAllText(@"C:\PersonalManager\"+listBox1.Items[i]+@"\first.txt"));

string.Replace 没有只有一个参数的重载。它总是两个。

只是给你一个起点:

private void button5_Click(object sender, EventArgs e)
{
    //populate the list of people
    listBox1.Items.Clear();
    string[] dirs = Directory.GetDirectories(@"C:\PersonalManager\");
    foreach (string dir in dirs)
    {

       var filePathToRead = Path.Combine(dir, "first.txt");
       var allTextOfTheFile = File.ReadAllText(filePathToRead);

        // now you can work with the content of the file

        listBox1.Items.Add(Path.GetFileName(dir));
    }
}