我正在寻找帮助,我是C#的新手,我正在尝试使用自定义索引创建combobox
,我是用这种方式添加items
mycb.Items.Add("My value 1");
mycb.Items.Add("My value 2");
这样,我默认情况下会得到这些索引 0 and 1
,因此我尝试使用CB
mycb.Items.Insert(5,"My value 1");
mycb.Items.Insert(6,"My value 2");
这样,CB
应该具有索引 5 and 6
,但这不起作用,因为当我选择这些选项之一时,就会出现此错误
无效参数=值“ 5”对“索引”无效
当我添加从0开始但不是我想要的连续索引时,它可以工作,如何在不出现此问题的情况下将想要的索引添加到CB
?希望您能帮助我,谢谢。
答案 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;