如何在ComboBox中添加自定义索引

时间:2019-01-22 22:00:52

标签: c# combobox

我正在寻找帮助,我是C#的新手,我正在尝试使用自定义索引创建combobox,我是用这种方式添加items

mycb.Items.Add("My value 1");
mycb.Items.Add("My value 2");

这样,我默认情况下会得到这些索引 0 and 1 ,因此我尝试使用CB Insert >

mycb.Items.Insert(5,"My value 1");
mycb.Items.Insert(6,"My value 2");

这样,CB应该具有索引 5 and 6 ,但这不起作用,因为当我选择这些选项之一时,就会出现此错误

无效参数=值“ 5”对“索引”无效

当我添加从0开始但不是我想要的连续索引时,它可以工作,如何在不出现此问题的情况下将想要的索引添加到CB?希望您能帮助我,谢谢。

2 个答案:

答案 0 :(得分:2)

您将创建一个项的字典(或数组),将其分配为组合框的数据源,并设置组合框的“ DisplayMember”和“ ValueMember”,如下所示:

Dictionary<int, string> myDictionary = new Dictionary<int, string>();

myDictionary.Add(1, "string");
myDictionary.Add(2, "string2");
myDictionary.Add(4, "string4");

mycb.DataSource = myDictionary.ToArray();

mycb.DisplayMember = "Value";
mycb.ValueMember = "Key";

答案 1 :(得分:1)

也许添加对象而不是自定义索引?

引用MSDN ComboBox.Items documentation

  

尽管ComboBox通常用于显示文本项,但是您可以将任何对象添加到ComboBox。通常,ComboBox中对象的表示形式是该对象的ToString方法返回的字符串。如果要改为显示该对象的成员,请通过将DisplayMember属性设置为适当成员的名称来选择将要显示的成员。 您还可以通过设置ValueMember属性来选择将代表该对象返回值的对象成员。有关更多信息,请参见ListControl。

来自MSDN ListControl.ValueMember documentation example的代码

ArrayList USStates = new ArrayList();
USStates.Add(new USState("Alabama", "AL"));
USStates.Add(new USState("Washington", "WA"));
USStates.Add(new USState("West Virginia", "WV"));
USStates.Add(new USState("Wisconsin", "WI"));
USStates.Add(new USState("Wyoming", "WY"));
ListBox1.DataSource = USStates;