列表框始终返回所选项目的错误值

时间:2013-05-07 21:06:09

标签: c# listbox selecteditem selectedindexchanged

我在C#中有一个动态填充的列表框。我对列表框的selectedindex_changed有问题。每次它给出列表框中最后一项的值而不是我选择的值。我在另一页上遇到了与组合框相同的问题。

我不知道为什么会这样发生。有谁知道我做错了什么?

首先,我创建一个新对象Item,将ID作为值放入列表框中。

    public class Item
    {
        public string Text { get; set; }
        public int Value { get; set; }

        public override string ToString()
        {
            return Text;
        }
    }

这里我用文本和ID作为其值填充列表框。这很好用,列表框应该按原样填充。

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
    }

1 个答案:

答案 0 :(得分:0)

感谢@bmused在评论中解决了这个问题,但有人可以解释究竟发生了什么吗?

我在使用combobox添加项目的foreach时遇到了同样的问题。问题是插入过程中项目的实例化与从combobox进行选择有什么关系?

P.S。抱歉,管理员无法发布此评论。