2013-10-04 154 views
1

Im new at Vb.net 2010. im using vb 6.0。任何人都可以帮助我将此代码转换为vb.net 2010?vb.6.0 lvwtag to 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 

回答

0

根据这个MSDN Link它讨论了VBA,但VB6非常相似),并在文档寻找VB6 ListView.FindItem和.net ListViewFindItemWithText方法,你需要在上下文更密切地关注你的VB6代码,以确定最合适的。

设置关键字。在VBA中,必须使用Set关键字来区分对象的赋值和赋值对象的默认属性。 因为Visual Basic .NET不支持默认属性,所以不需要设置关键字并且不再支持

所以你的情况我会做这样的事情:

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 
+0

是的,我知道。但我的问题是。我可以在vb.net 2010 vb6.0中使用什么是“lvwtag” – Umar

+1

没有看到上下文我不知道什么lvwtag或确切地你正在试图找到。在.net中有一个ListViewItem,它与VB6中的ListItem不一样。您将需要比较文档以确定它。我会看看我刚刚添加的链接,看它是否有任何帮助 –

+0

@MarkHall:lvwtag是一个枚举,它用于告诉vb6 listview FindItem方法,该搜索应该基于标记完成。 – jmoreno

0

你的运气了,在.net中的列表视图不具有等效的方法。好消息是编写你自己的代码比较简单。如果你只在一个地方使用它,你可以使用LINQ来做到这一点,而不必声明你自己的方法,otoh如果你使用它很多,然后一个扩展方法将允许你“添加”到列表视图类。

虽然ListView class不包含由一个列表项的Tag属性搜索中的FindItem方法或等效的方法,这是很容易做到使用LINQ(演员用来使列表项集合一个IEnumerable)

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