【问题标题】:vb.6.0 lvwtag to vb.net 2010vb.6.0 lvwtag 到 vb.net 2010
【发布时间】:2013-10-04 04:18:23
【问题描述】:

我是 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

【问题讨论】:

    标签: vb.net vb6 vb6-migration


    【解决方案1】:

    根据MSDN Link它讨论 VBA,但 VB6 非常相似)并查看 VB6 ListView.FindItem 和 .net ListViewFindItemWithText 方法的文档,您将需要更仔细地查看您的 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
    

    【讨论】:

    • 是的,我知道。但我的问题是。我可以在 vb6.0 的 vb.net 2010 中使用什么是“lvwtag”
    • 在没有看到上下文的情况下,我不知道什么 lvwtag 或您要查找的确切内容。您在 .net 中有一个 ListViewItem,它与 VB6 中的 ListItem 不同。您将需要比较文档以确定它。我会查看我刚刚添加的链接,看看是否有任何帮助
    • @MarkHall: lvwtag 是一个枚举,它用于告诉vb6 listview FindItem 方法应该根据标签进行搜索。
    【解决方案2】:

    你不走运,.Net 中的列表视图没有等效的方法。好消息是编写自己的代码相对简单。如果您只在一个地方使用它,则可以使用 LINQ 来执行此操作,而无需声明自己的方法,otoh 如果您经常使用它,那么扩展方法将允许您将其“添加”到 listview 类.

    虽然ListView class 不包含 FindItem 方法或通过 ListItem 的 Tag 属性进行搜索的等效方法,但使用 LINQ 很容易做到等效(Cast 用于使列表项集合成为可枚举的)

     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))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-01
      • 2011-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多