У меня есть список в C#, который динамически заполняется. У меня проблема с выбранным indexex_changed из списка. Каждый раз он дает значение последнего элемента в списке, а не тот, который я выбрал. У меня такая же проблема с combobox на другой странице.Listbox всегда возвращает неправильное значение выбранного элемента
Я не знаю, почему так происходит. Кто-нибудь знает, что я делаю неправильно?
Сначала я создаю новый объект Item, чтобы положить текст с идентификатором в качестве значения в списке.
public class Item
{
public string Text { get; set; }
public int Value { get; set; }
public override string ToString()
{
return Text;
}
}
Здесь я заполняю список с текстом и идентификатором в качестве его значения. Это прекрасно работает, список заполняется, как и должно быть.
private void FormDeelnemers_Load(object sender, EventArgs e)
{
BLPersoon blPersoon = new BLPersoon();
DBOpdracht.PersoonDataTable personen = blPersoon.GetAllPersonen();
//Item item = new Item(); -> edit: delete this
foreach (DBOpdracht.PersoonRow persoon in personen)
{
Item item = new Item(); -> edit: add this here
item.Text = persoon.naam;
item.Value = persoon.ID;
listBoxPersonen.Items.Add(item);
}
}
В этом проблема. Он дает значение последнего элемента в списке, а не тот, который я выбрал. Как получить выбранный?
private void listBoxPersonen_SelectedIndexChanged(object sender, EventArgs e)
{
int nummer = (listBoxPersonen.SelectedItem as Item).Value;
MessageBox.Show(nummer.ToString());
//MessageBox.Show(listBoxPersonen.SelectedItem.ToString()); -> same problem
}
У вас есть свой список, чтобы вызвать обратную передачу при изменении выбора? Или вы используете какой-то другой элемент управления, чтобы вызвать обратную передачу? Кажется, проблема связана с тем, когда сервер фактически получает информацию от клиента, что выбранный элемент изменился. – Renan
Нет, код, который вы видите в selectedindexchanged, является единственным кодом, который у меня до сих пор, потому что я наткнулся на эту проблему. С моей combobox у меня такая же проблема, и когда появляется сообщение, появляется последний элемент, но когда я закрываю окно сообщения, выбранный элемент выбирается снова. Так что это тоже странно, я думаю. – Lewis
Ваш экземпляр 'Item' находится за пределами вашего цикла' foreach' в 'FormDeelnemers_Load'. – 2013-05-07 21:30:35