2011-11-06 50 views
1

我正在制作一个Windows窗体项目,该窗体项目将在业余时间搜索指定文件夹中的文件。到目前为止,我已经有了像在Windows资源管理器中一样显示文件夹的TreeView。添加“标记”属性到列表框的项目,如TreeView的节点?

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

到目前为止,我看到这样的三种方式:

  1. 具有列表框显示的完整路径。
  2. 使用全局列表或数组来跟踪完整路径,而ListBox仅显示文件名。然后使用索引匹配相应的项目。
  3. 为每个ListBox的项目添加一个“Tag”属性,就像TreeView的节点一样。

对我来说,第三种方法是最吸引人的,但我不知道从哪里开始。直到现在,我一直在摆弄一个控制库无济于事。

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

任何帮助将不胜感激。

回答

2

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

然后,您可以将类的实例直接放入列表框中,并将列表框中的项目转换回该类以获取该属性。

+0

工作就像一个魅力。谢谢! – Netfangled

1

我会做一个自定义类来表示列表中的项目。您有代表要显示的值的属性(不是字段!),并且您可以在列表框的.DisplayMember和.ValueMember属性中输入该属性名称。无论DisplayMember返回的是什么,都将显示为该项目的文本,并且.ValueMember返回的内容将是.SelectedValue返回的内容。您将能够直接访问.SelectedItem以获取所选的确切项目。这样你可以存储任何你想要的项目。如果您没有指定.DisplayMember,则列表框将在该项目上使用.ToString函数。

相关问题