Combobox c#SelectedItem不起作用

时间:2016-02-26 11:41:07

标签: c# combobox selecteditem selectedindex

我是C#的大三学生。我有Combobox的问题。当我使用SelectedItem时没有完全正常工作,我想要什么。 SelectedItem总是返回组合框中的最后一项,但是当我使用SelectedIndex时返回正确的结果。

组合框中的示例有3个项目:Admin,Moderation,Salesman。当我使用SelectedItem时,总是返回Salesman,即使我选择Admin。

有我的代码:

类ComboboxItem

    class ComboboxItem
{
    public string Text { get; set; }
    public object Value { get; set; }

    public override string ToString()
    {
        return Value.ToString();
    }
}

将项目添加到组合框

        private void AddItemIntoComboBoxGroup()
    {
        string query = "SELECT* FROM kites_mango.staff_group; ";
        DBUtility data = new DBUtility();
        List<string>[] list = data.Select(query);

        if (list != null && list[0].Count() > 0)
        {
            ComboboxItem item = new ComboboxItem();
            for (int i = 0; i < list[0].Count(); i++)
            {
                item.Value = list[0][i];
                item.Text = (list[1][i] + " - " + list[0][i]);
                CbBGroup.Items.Add(item);
            }
        }
    }

获取所选项目

            if (CbBGroup.SelectedItem != null)
        {
            MessageBox.Show(CbBGroup.SelectedIndex + "/" + CbBGroup.SelectedItem.ToString());
        }

1 个答案:

答案 0 :(得分:1)

您在for循环之前实例化 ComboboxItem 对象。这样,对于 for 语句中的每个循环,您将更改同一对象的属性,从而使之前在列表中加载的对象也被修改。也就是说,你的列表可以有3个itens,但它们将具有相同的值(Salesman),因为列表中的所有itens都具有相同的对象引用。

改变一下:

        ComboboxItem item = new ComboboxItem();
        for (int i = 0; i < list[0].Count(); i++)
        {
            item.Value = list[0][i];
            item.Text = (list[1][i] + " - " + list[0][i]);
            CbBGroup.Items.Add(item);
        }

对此:

        for (int i = 0; i < list[0].Count(); i++)
        {
            ComboboxItem item = new ComboboxItem();
            item.Value = list[0][i];
            item.Text = (list[1][i] + " - " + list[0][i]);
            CbBGroup.Items.Add(item);
        }