为什么我在这里得到“IndexOutOfRangeException未处理”?

时间:2016-02-11 01:27:30

标签: c# combobox selectedindexchanged indexoutofrangeexception valuemember

当我在索引3(comboBoxWeekToSchedule中的第四项)中选择一个条目时,

comboBoxWeekToSchedule中有13个条目。然而,抛出“ IndexOutOfRangeException未处理”异常。

这是运行抛出异常的代码(在处理程序的第一行):

private void comboBoxWeekToSchedule_SelectedIndexChanged(object sender, EventArgs eargs)
{
    DateTime dt = Convert.ToDateTime(comboBoxWeekToSchedule.ValueMember[comboBoxWeekToSchedule.SelectedIndex]);
    DisableICRVBS(AYttFMConstsAndUtils.IsFirstWeekOfMonth(dt));            
}

comboBoxWeekToSchedule中的值是LongDateString格式的日期;我选择的那个是“2016年3月7日星期一”

那么SelectedIndex怎么可能超出范围呢?

1 个答案:

答案 0 :(得分:1)

ValueMember是一个字符串。当您使用ComboBox属性时,comboBoxWeetToSchedule.SelectedValue控件使用它来检索(使用反射)与特定元素关联的值。因此,您可以将其设置为"Date",当您引用SelectedValue时,您将真正检索SelectedItem的{​​{1}}属性。

对该字符串执行索引将检索' nth'我确信这个角色不是你想做的。由于您没有提供任何设置Date的代码,我只能假设您将其设置为3个字符或更少的字符串,这就是为什么它会倒下。

您真正想要在代码中执行的操作是检索值:

ValueMember