gpt4 book ai didi

c# - CheckedListBox - FileInfo 对象的集合 - 显示自定义 ToString

转载 作者:行者123 更新时间:2023-11-30 15:06:34 25 4
gpt4 key购买 nike

我在 WinForms 应用程序(3.5 运行时)中有一个 CheckedListBox,我正在向 Items ObjectCollection 添加一堆 FileInfo 对象。问题是我不喜欢 CheckedListBox 中显示的内容(因为 FileInfo 来自 Directory.GetFiles() 它只显示列表框中文件的 FileInfo.Name)。

有没有简单的方法可以更改 CheckedListBox 中显示的内容,而无需创建单独的自定义类/对象。

我基本上在做

checkedListBox.Items.Add(fileInfo)

结果只是文件的文件名。

更改显示成员有效,但我无法创建自定义内容,只能创建 FileInfo 类中的现有属性。

我希望能够显示类似 Name - FullName 的内容

示例(所需):File1.txt - C:\Path\SubPath\File1.txt

最佳答案

实际上,它似乎毕竟应该是可能的。 CheckedListBox 具有 FormattingEnabled 属性和继承自 ListBoxFormat 事件,该事件在显示每个项目之前调用。所以沿着这些方向的东西应该起作用:

myCheckedListBox.FormattingEnabled = true;
myCheckedListBox.Format += (s, e) => { e.Value = string.Format("{0} - {1}", ((FileInfo)e.ListItem).Name, ((FileInfo)e.ListItem).FullName); };

虽然还没有测试过。另见 MSDN

旧答案:

我认为如果不创建包装器就无法做到这一点。尽管 10 行代码对我来说并没有那么糟糕:

class FileInfoView
{
public FileInfo Info { get; private set; }

public FileInfoView(FileInfo info)
{
Info = info;
}

public override string ToString()
{
// return whatever you want here
}
}

拥有 View 模型的另一个好处是,您可以按照自己喜欢的方式进一步装饰它以达到显示目的。

关于c# - CheckedListBox - FileInfo 对象的集合 - 显示自定义 ToString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7640592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com