CheckedListBox显示不同的字符串c#
我在写一个备份应用程序上有一个CheckedListBox。 我希望用户选择他们想要备份的文件夹,即桌面 我有我的for循环为每个打勾的项目等工作,但我希望用户看到标记为“桌面”而不是c:\ users \ username的复选框\桌面CheckedListBox显示不同的字符串c#
有人可以告诉我如何将列表框标签更改为与实际返回到我的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类的路径。
路径都是硬编码的我想要桌面,我的文档等与一个单独的tickbox。 Myles已经得到了我想做的事情,但是当我实现你的建议时,这个复选框被标记为“system_backup(项目名称).form1 + BackupDir”任何想法为什么会出现这种情况,你发布的代码看起来是正确的,但它确实没有用我的字符串标签框 – meeeeeeeeee
我试着实现你的解决方案,但得到system_backup.form1 + BackupDir而不是桌面。有什么建议么? - 你的解决方案最适合我,因为我想键入要显示的字符串只是不会工作though.cheers – meeeeeeeeee
我的坏,忽略覆盖BackupDir的ToString(),现在已编辑。 –
你如何获得文件夹名称,由FolderBrowserDialog,或者它是由用户手动输入?
使用.Split(“\”)
迈尔斯已经得到了我想要做的,但是当我实现该代码时,它将该框标记为system_backup.form1 + BackupDir而不是“桌面” – meeeeeeeeee
这是我的建议。对于像您的备份文件夹中创建一个数据类:
public class BackupFolder
{
private string folderPath;
public BackupFolder(string folderPath)
{
this.folderPath = folderPath;
FolderName = folderPath.Split(new[] { '\\' }).Last();
}
public string FolderName { get; private set; }
}
然后设置这些文件的列表作为数据源为CheckedListBox和将DisplayMember设置为你想要显示它包含的值的属性。像这样:
var data = new BindingList<BackupFolder>();
data.Add(new BackupFolder("D:\\Data"));
checkedListBox1.DataSource = data;
checkedListBox1.DisplayMember = "FolderName";
谢谢你,它现在正确显示,即它表示窗体上的桌面上的桌面,但上面的路径实际上是system_backup.form1 + backupfolder,而不是您的代码中定义的实际D:\ data。当鼠标悬停在checkedlistbox1.dislpaymember&displaysource上时,它也显示“此属性与此类无关” – meeeeeeeeee
@meeeeeeeeee:请原谅我的“d:\\ data” - 这只是一个示例,而不是解决方案。 ;-)请不要忘记投票并接受答案,这就是StackOverflow的工作原理。请参阅[faq] – Fischermaen
我知道谢谢,但我尝试了正确的路径并得到了相同的结果,我选中了数据,但由于某种原因而不是正确的路径,它返回了system_backup.form1 + backupfolder。 – meeeeeeeeee
你正在使用WinForms或WPF吗? – Fischermaen
窗体.. – meeeeeeeeee