Странно.В VB6 вы могли бы сделать это:
lstARCurrent.Add(someString)
lstARCurrent.ItemData(lstARCurrent.NewIndex) = myLongKey
Это был хороший способ сохранить строку в поле списка, но связать с ней идентификатор базы данных.
Я предполагаю, что 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
объект. * * тысяча двадцать-один