Why am I getting an "IndexOutOfRangeException was unhandled" here?

comboBoxWeekToSchedule has 13 entries in it when I select the one at index 3 (the fourth item in comboBoxWeekToSchedule). Yet a "IndexOutOfRangeException was unhandled" exception is thrown.

Here is the code that runs which is throwing the exception (on the first line of the handler):

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

The values in comboBoxWeekToSchedule are dates in LongDateString format; the one in particular I chose is "Monday, March 7, 2016"

So how is it that SelectedIndex could possibly be out of range?

Upvotes: 0

Views: 181

Answers (1)

Jens Meinecke
Jens Meinecke

Reputation: 2940

ValueMember is a string. It is used by the ComboBox control to retrieve (using reflection) the value that is associated with a particular element when you use the comboBoxWeetToSchedule.SelectedValue property. So you might set it something like "Date" and when you reference SelectedValue you will really be retrieving the SelectedItem's Date property.

Doing an index on that string will retrieve the 'nth' character which I am sure is not what you want to do. Since you have not provided any code that sets ValueMember, I can only assume that you are setting it to a string of 3 characters or less, which is why it is falling over.

What you really want to do in your code is retrieve the value instead:

DateTime dt = Convert.ToDateTime(comboBoxWeekToSchedule.SelectedValue);

Upvotes: 1

Related Questions