C# 如何在组合框中添加自定义索引

C# 如何在组合框中添加自定义索引,c#,combobox,C#,Combobox,我正在寻找一些帮助,我是C新手,我正在尝试创建一个带有自定义索引的组合框,我是这样添加项目的 通过这种方式,我在默认情况下获得了这些索引0和1,因此我尝试使用Insert为CB提供我想要的索引 这样,CB应该有索引5和索引6,但这不起作用,因为当我选择其中一个选项时,出现了此错误 无效参数=值“5”对“索引”无效 当我添加从0开始的连续索引时,它会起作用,但这不是我想要的,如何将我想要的索引添加到CB中而不出现此问题?我希望您能帮助我,谢谢。您可以制作一个字典或项目数组,将其指定为combobo

我正在寻找一些帮助,我是C新手,我正在尝试创建一个带有自定义索引的组合框,我是这样添加项目的

通过这种方式,我在默认情况下获得了这些索引0和1,因此我尝试使用Insert为CB提供我想要的索引

这样,CB应该有索引5和索引6,但这不起作用,因为当我选择其中一个选项时,出现了此错误

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


当我添加从0开始的连续索引时,它会起作用,但这不是我想要的,如何将我想要的索引添加到CB中而不出现此问题?我希望您能帮助我,谢谢。

您可以制作一个字典或项目数组,将其指定为combobox的数据源,并设置combobox的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";

您可以创建一个项目字典或数组,将其指定为combobox的数据源,并设置combobox的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";

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

尽管组合框通常用于显示文本项,但您可以向组合框添加任何对象。通常,组合框中对象的表示形式是该对象的ToString方法返回的字符串。如果希望显示对象的成员,请通过将DisplayMember属性设置为相应成员的名称来选择将显示的成员。您还可以通过设置ValueMember属性来选择对象的成员,该成员将表示对象返回的值。有关更多信息,请参阅ListControl

代码来自


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

尽管组合框通常用于显示文本项,但您可以向组合框添加任何对象。通常,组合框中对象的表示形式是该对象的ToString方法返回的字符串。如果希望显示对象的成员,请通过将DisplayMember属性设置为相应成员的名称来选择将显示的成员。您还可以通过设置ValueMember属性来选择对象的成员,该成员将表示对象返回的值。有关更多信息,请参阅ListControl

代码来自


前两项的指数分别为0和1。你拥有的是其他东西——也许是物品的价值?将它们视为索引是没有帮助的,因为正如您所记录的,您不能使用5和/或6作为索引来检索第一项或第二项。@WelcomeOverflow是的,我知道它们是0和1,但我想给出索引5和6,如何才能不出现错误?这是我尝试添加自定义索引的两种方法,现在我正在使用第二种方法来实现它,不是两者都要,我需要使用我想要的索引。索引是集合的只读属性,因此不能将它们设置为除其本身之外的任何内容。Insert函数中的Index参数允许您控制在集合中插入的位置,它不设置索引。为什么要进行向下投票?前两项的索引分别为0和1。你拥有的是其他东西——也许是物品的价值?将它们视为索引是没有帮助的,因为正如您所记录的,您不能使用5和/或6作为索引来检索第一项或第二项。@WelcomeOverflow是的,我知道它们是0和1,但我想给出索引5和6,如何才能不出现错误?这是我尝试添加自定义索引的两种方法,现在我正在使用第二种方法来实现它,不是两者都要,我需要使用我想要的索引。索引是集合的只读属性,因此不能将它们设置为除其本身之外的任何内容。Insert函数中的Index参数允许您控制在集合中插入的位置,它没有设置索引。为什么要进行向下投票?谢谢!为了使它更好:1如前所述,mycb.DataSource=应该是最后一行。2我不得不使用mycb.DataSource=newbindingSourceMyDictionary,谢谢!为了使它更好:1如前所述,mycb.DataSource=应该是最后一行。2我必须使用mycb.DataSource=newbindingSourceMyDictionary,null
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";
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;