开发者

Upgrade VB6 to .net NewIndex & OLE1

I am trying to get my conversion fixed from a VB开发者_Go百科6 application over to a VB.net 2010 application. Everything went well but for a few sleeted listbox NewIndex and OLE control.

Below are the trouble lines that could not seem to be converted:

VB6.SetItemData(lstARCurrent, lstARCurrent.NewIndex, (.Fields("approval_s").Value))
OLE1.CreateLink(strFileName)
OLE1.DoVerb(vbOLEOpen)

If anyone has any incite to correct this issue then that would be great as i have not found a way around these errors!

Thanks!

David


That's weird. In VB6 you'd do this:

lstARCurrent.Add(someString)
lstARCurrent.ItemData(lstARCurrent.NewIndex) = myLongKey

That was a nice way to store a string into a list box but associate a database ID with it.

I assume your VB6.SetItemData routine is doing the same thing. However, in .NET that won't work. For one thing, items in list boxes in VB6 are 1 based instead of 0 based, so that'd probably cause issues, but the .NET list box most likely doesn't have a .NewIndex property. Neither does a listbox have an ItemData array property.

The new way to handle this is to add an entire object and let the .ToString method tell the listbox what to display (sorry for C#, my VB.Net is rusty):

class MyItem
{
    public int MyKey { get; set; }
    public string MyStringValue { get; set; }
    public override string ToString()
    {
        return this.MyStringValue;
    }
}

Then just add the item:

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

It will display abc but you can use lstARCurrent.SelectedItem to get back the MyItem object.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜