這很奇怪。在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
對象。
您是否收到編譯錯誤消息或運行時異常消息?你能發表任何消息的確切措詞嗎? – MarkJ 2011-02-04 14:35:07