我正在尝试将我的转换从VB6应用程序修复到VB.net 2010应用程序。一切顺利但是只有几个列表框NewIndex 和 OLE控件。
以下是无法转换的问题行:
VB6.SetItemData(lstARCurrent, lstARCurrent.NewIndex, (.Fields("approval_s").Value))
OLE1.CreateLink(strFileName)
OLE1.DoVerb(vbOLEOpen)
如果有人有任何煽动纠正这个问题,那么这将是很好的,因为我没有找到解决这些错误的方法!
谢谢!
大卫
答案 0 :(得分:1)
这很奇怪。在VB6中你会这样做:
lstARCurrent.Add(someString)
lstARCurrent.ItemData(lstARCurrent.NewIndex) = myLongKey
这是将字符串存储到列表框中但将数据库ID与其关联的好方法。
我认为你的VB6.SetItemData
例程正在做同样的事情。但是,在.NET中无法正常工作。首先,VB6中列表框中的项目是1而不是基于0,因此可能会导致问题,但.NET列表框很可能没有.NewIndex
属性。列表框也没有ItemData
数组属性。
处理此问题的新方法是添加整个对象,让.ToString
方法告诉列表框要显示的内容(抱歉C#,我的VB.Net生锈了):
class MyItem
{
public int MyKey { get; set; }
public string MyStringValue { get; set; }
public override string ToString()
{
return this.MyStringValue;
}
}
然后只需添加项目:
lstARCurrent.Items.Add(new MyItem() { MyKey = 3, MyStringValue = "abc" });
它会显示abc
,但您可以使用lstARCurrent.SelectedItem
取回MyItem
个对象。