将 "Tag" 属性添加到列表框的项(如树视图的节点)?



我正在制作一个Windows窗体项目,该项目将在业余时间搜索指定文件夹中的文件。到目前为止,我有我的TreeView显示文件夹就像在Windows资源管理器。

我也有一个ListBox,将存储所有的搜索结果。当我双击该列表中的一个项目时,我希望有打开该文件的选项。

到目前为止,我看到了三种方法:
  1. 让ListBox显示完整路径
  2. 使用全局列表或数组来跟踪完整的路径,而ListBox只显示文件名。然后使用索引匹配相应的项目。
  3. 为我的ListBox的每个项目添加一个"Tag"属性,就像TreeView的节点一样。

对我来说,第三种方法最有吸引力,但我不知道从哪里开始。到目前为止,我一直在摆弄控制库,但无济于事。

我希望能够让标签以与TreeView类似的方式工作。因此,检索标签和设置标签的代码看起来像ListBox1.Items[i].TagListBox1.Tag[i],如果前者是不可能的。

您应该创建一个带有返回完整路径属性的自定义SearchResult类。
该类应该覆盖ToString()并返回您想要在列表框中显示的文本。

然后你可以把你的类的实例直接放到列表框中,并从列表框中强制转换一个项目回类以获得属性。

我将创建一个自定义类来表示列表中的项目。你有属性(不是字段!)来表示要显示的值,选择的值你可以在列表框的。displaymember和。valuemember属性中输入属性名。DisplayMember返回的内容将被显示为项目的文本,而. valuemember返回的内容将是。selectedvalue返回的内容。您将能够直接访问. selecteditem以获得被选中的确切项目。这样你就可以存储任何你想要的项目。如果你没有指定。displaymember,那么列表框将使用。tostring函数。

最新更新