我正在编写的备份应用程序上有一个CheckedListBox。
我希望用户选择他们要备份的文件夹,即桌面
我的for循环适用于每个已打勾的项目,但我希望用户看到标记为“桌面”的复选框,而不是c:\ users \ username \ desktop
有人可以告诉我如何将列表框标签更改为与实际返回给我的for循环的内容不同的内容。
最佳答案
您应该创建一个包含完整路径的类型,并重写ToString()以返回要在CheckedListBox中显示的内容。然后CheckedListBox.SelectedItems将保存您的类型的列表。
public void PopulateListBox()
{
_checkedListBox.Items.Add(new BackupDir(@"C:\foo\bar\desktop", "Desktop"));
}
public void IterateSelectedItems()
{
foreach(BackupDir backupDir in _checkedListBox.CheckedItems)
Messagebox.Show(string.format("{0}({1}", backupDir.DisplayText, backupDir.Path));
}
public class BackupDir
{
public string Path { get; private set; }
public string DisplayText { get; private set; }
public BackupDir(string path, string displayText)
{
Path = path;
DisplayText = displayText;
}
public override string ToString()
{
return DisplayText;
}
}
如果您要对每个列表项执行此操作,则当然可以从路径中删除文件夹名称,而在BackupDir类上仅包含路径arg。
关于c# - CheckedListBox显示不同的字符串C#,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8241195/