我正在构建一个联系人管理器程序,我有一个按钮,当按下该按钮时,会更新名称列表框。不幸的是,我希望我的用户在关闭程序之前并不总是把名字放进去。我已经决定在输入名称之前将列表中的新联系人显示为随机数字,因此我的一些项目将是数字,一些将是名称。不过,我似乎无法让名字出现。我一直将名称存储在包含在唯一随机数文件夹中的文本文件中。我想要的是能够将所有文件夹名称加载到列表中,然后检查名称是否与项目相关联,如果是,请将该号码替换为相应的名称。以下代码是在我被难倒之前得到的。
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拒绝编译它。也许我应该以不同的方式解决这个问题?你们有什么建议的?我已经搜索了谷歌和Bing,但还没弄明白我做错了什么。对不起,如果我的代码很乱,这是我的第一次。
P.S。我是一个初学者,所以我不能不经常发表任何评论而无法围绕太多代码。
答案 0 :(得分:0)
我很确定这一行破坏了您的代码:
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));
}
}