vb.6.0 lvwtag到vb.net 2010

时间:2013-10-04 04:18:23

标签: vb.net vb6 vb6-migration

我是Vb.net 2010的新人。我正在使用vb 6.0。任何人都可以帮我将此代码转换为vb.net 2010吗?

Dim SkeyBracket as ingeter
Dim xList As ListItem
If sKeyBracket <> 0 Then
    Set xList = lvBracket.FindItem(CStr(sKeyBracket), lvwTag)
Else
    Set xList = lvBracket.ListItems(1)
End If

2 个答案:

答案 0 :(得分:0)

根据这个MSDN Link它讨论VBA,但VB6非常相似)并查看VB6 ListView.FindItem和.net {{3}的文档方法您需要更仔细地查看VB6代码的上下文,以确定最佳匹配。

  

设置关键字。在VBA中,Set关键字是区分对象的赋值和对象的默认属性的必要条件所必需的。 由于Visual Basic .NET不支持默认属性,因此不再需要Set关键字且不再支持

所以在你的情况下,我会做类似的事情:

Dim SkeyBracket as integer
Dim xList As ListViewItem

If sKeyBracket <> 0 Then
    xList = lvBracket.FindItem(CStr(sKeyBracket), lvwTag)
Else
    xList = lvBracket.ListItems(1)
End If

答案 1 :(得分:0)

你运气不好,.Net中的listviews没有等效的方法。好消息是编写自己的内容相对微不足道。如果你只是在一个地方使用它,你可以使用LINQ这样做,而不必声明你自己的方法,如果你经常使用它,otoh,然后扩展方法将允许你“添加”它到listview类

虽然ListView class不包含通过ListItem的Tag属性搜索的FindItem方法或等效方法,但使用LINQ(使用Cast来使列表项集合成为可相关的)很容易做等效的方法< / p>

 lvBracket.Items.Cast(Of ListItem).FirstOrDefault(
               Function(li) Object.Equals(li.Tag, CStr(sKeyBracket))

或使用VB's null coalesence operator(使用2个参数调用的那个):

 xList = If(lvBracket.Items.Cast(Of ListItem).FirstOrDefault(
               Function(li) Object.Equals(li.Tag, CStr(sKeyBracket)),
            lvBracket.Items(1))

虽然我真的怀疑你的意思是lvBracket.Items(0) ......

如果你想把它作为一种方法,那么extension method很容易写出:

Public Function FindByTag(this as ListView, tagStr as String) As ListItem
    Return this.Items.Cast(Of ListItem).FirstOrDefault(
               Function(li) CStr(li.Tag) = tagStr)
End Function

用作lvBracket.FindByTag(CStr(sKeyBracket))