Combobox每个项目有两个单独的文本字段

时间:2015-10-20 14:29:03

标签: c# .net winforms

我想为每件商品存储两件商品,例如名称和描述。 在组合框中,所选项目将显示名称,标签将显示项目的描述,每当更改所选项目时,标签需要更新。

我在下面的内容似乎存储了这些项目,但是根据所选索引或者每次更改项目时都不显示这些项目!

ComboboxItem item = new ComboboxItem();
            item.Text = "A1";
            item.Value = "A2";
            comboBox1.Items.Add(item);

            item.Text = "B1";
            item.Value = "B2";
            comboBox1.Items.Add(item);


            comboBox1.SelectedIndex = 0;

            label1.Text = (comboBox1.SelectedItem as ComboboxItem).Value.ToString();



        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            label1.Text = (comboBox1.SelectedItem as ComboboxItem).Value.ToString();
        }

和一个班级:

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

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

1 个答案:

答案 0 :(得分:2)

ComboBoxItem是引用类型。您必须在将新项目添加到comboBox1项目之前创建新项目,否则它也会更改以前添加的项目。

更改此部分

ComboboxItem item = new ComboboxItem();
item.Text = "A1";
item.Value = "A2";
comboBox1.Items.Add(item);

// Will change value of item thus item added to combo box will change too because the references are same
item.Text = "B1"; 
item.Value = "B2";
comboBox1.Items.Add(item);

到此

ComboboxItem item = new ComboboxItem();
item.Text = "A1";
item.Value = "A2";
comboBox1.Items.Add(item);

ComboboxItem item2 = new ComboboxItem();
item2.Text = "B1";
item2.Value = "B2";
comboBox1.Items.Add(item2);