2012-10-11 31 views
1

我正在存储FileInfo类型的对象,并试图通过ListView正确地重新获得对它们的访问权限。获取存储在标记中的对象的访问权限

我想完整的路径动态..但只显示列表视图中的文件名。所以我给出了一个将FileInfo存储在标签中的方法,但无法重新获得价值。

这是我怎么把我的信息在列表视图..

For Each element As FileInfo In arrayList 
      With ListView2 
       .Items.Add(element.Name) 
       .Tag = element 
      End With 

现在我想重新访问该检查在列表视图中的元素。我可以很容易地得到显示的值。但我只显示文件名和扩展名。我想要完整的路径。

Private Sub ListView1_ItemCheck1(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemCheckEventArgs) Handles ListView1.ItemCheck 

Dim Path As String = Me.ListView1.Items(e.Index).Text 
'this gives me the filename.. but I want to pull the full path out.. 

回答

1

这将让你的路径:

Dim Path As String = CType(Me.ListView1.Items(e.Index).Tag, FileInfo).FullName 

或者,如果你需要的不仅仅是路径来访问更多的属性,它会宣布一个FileInfo变量,并将其设置为标签是有用的:

Dim element As FileInfo = CType(Me.ListView1.Items(e.Index).Tag, FileInfo) 
Dim Path As String = element.FullName 
Dim fileName As String = element.Name 
' ... 
+0

由于一些尴尬的原因我没有得到任何字符串值后运行..我现在正在调试。现在我可以从ListView.tag获得一个值。但是当Listview复选框更改时它不是正确的值。 – DJPlayer

+0

这不是魔术。如果“标签”属性的值发生变化,那只是因为您改变了它。这个属性改变了,或者它是一个带有不同标签的全新列表项。我会仔细检查你的其他代码,并确保你没有改变代码中其他地方的列表。 –

+0

我真的把它扫描了下来......我找不到任何接触标签值的东西..(非常尴尬)。现在,因为我以与FileInfo对象数组相同的顺序填充listview,我只是在位置(e.Index)处抓取FileInfo对象。不是我想要它如何工作......但它确实如此,直到我弄清楚发生了什么。 – DJPlayer