Vb.net 将VB6升级到.net NewIndex&;油1

Vb.net 将VB6升级到.net NewIndex&;油1,vb.net,visual-studio-2010,vb6,ole,vb6-migration,Vb.net,Visual Studio 2010,Vb6,Ole,Vb6 Migration,我正在尝试修复从VB6应用程序到VB.net 2010应用程序的转换。一切都进行得很顺利,只不过有几天,listbox新建了索引和OLE控件 以下是无法转换的故障线路: VB6.SetItemData(lstARCurrent, lstARCurrent.NewIndex, (.Fields("approval_s").Value)) OLE1.CreateLink(strFileName) OLE1.DoVerb(vbOLEOpen) 如果有人想纠正这个问题,那就太好了,因为我还没有找到解决

我正在尝试修复从VB6应用程序到VB.net 2010应用程序的转换。一切都进行得很顺利,只不过有几天,listbox新建了索引和OLE控件

以下是无法转换的故障线路:

VB6.SetItemData(lstARCurrent, lstARCurrent.NewIndex, (.Fields("approval_s").Value))
OLE1.CreateLink(strFileName)
OLE1.DoVerb(vbOLEOpen)
如果有人想纠正这个问题,那就太好了,因为我还没有找到解决这些错误的方法

谢谢


大卫,这太奇怪了。在VB6中,可以执行以下操作:

lstARCurrent.Add(someString)
lstARCurrent.ItemData(lstARCurrent.NewIndex) = myLongKey
这是一种将字符串存储到列表框中,但将数据库ID与其关联的好方法

我假设您的
VB6.SetItemData
例程也在做同样的事情。然而,在.NET中,这是行不通的。首先,VB6中列表框中的项目是基于1而不是基于0的,因此这可能会导致问题,但是.NET列表框很可能没有
.NewIndex
属性。列表框也没有
ItemData
数组属性

处理这个问题的新方法是添加一个完整的对象,并让
.ToString
方法告诉列表框显示什么(很抱歉,我的VB.Net已经生锈了):

然后只需添加以下项目:

lstARCurrent.Items.Add(new MyItem() { MyKey = 3, MyStringValue = "abc" });

它将显示
abc
,但您可以使用
lstARCurrent。选择editem
返回
MyItem
对象。

您是否收到编译错误消息或运行时异常消息?你能发布任何消息的确切措辞吗?谢谢你提供的信息,斯科特!:o)
lstARCurrent.Items.Add(new MyItem() { MyKey = 3, MyStringValue = "abc" });