我正在编写的备份应用程序上有一个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/

10-11 07:42