2015-02-20 4 views
0

Сэра я получил индекс из исключения диапазона в этих кодах Может кто-нибудь объяснить мне, где я сделал ошибкуИндекс выходит за исключение диапазона

if (SelectedRowtt > -1) 
{ 
    dgvSItt.Rows[SelectedRowtt].Cells["Item_Code"].Value =txtItemCode.Text; 
    dgvSItt.Rows[SelectedRowtt].Cells["Description"].Value = txtDescription.Text; 
    dgvSItt.Rows[SelectedRowtt].Cells["Qty"].Value = Convert.ToDecimal(txtQty.Text).ToString(Program.gDigitsAfterDecimal); 
    dgvSItt.Rows[SelectedRowtt].Cells["UOM"].Value = Convert.ToDecimal(txtUOM.Text).ToString(Program.gDigitsAfterDecimal); 

    gvSItt.Rows[SelectedRowtt].Cells["Amount"].Value = Convert.ToDecimal(txtAmount.Text).ToString(Program.gDigitsAfterDecimal); 
    dgvSItt.Rows[SelectedRowtt].Cells["Discount"].Value = Convert.ToDecimal(txtRate.Text).ToString(Program.gDigitsAfterDecimal); 
    SelectedRowtt = -1; 
} 
else 
{ 
    IsDO = false; 
    dgvSItt.Rows.Add(); 
    SelectedRowtt = -1; 
} 
+2

Что такое 'SelectedRowtt'? –

+1

У dgvSItt нет строк, может быть? Вы проверяли, есть ли в нем какие-либо строки перед его обработкой? – user3021830

+1

Лучший ответ на ваш вопрос: научиться использовать отладчик. Это просто вопрос, чтобы проверить, что такое значение SelectedRowtt за время исключения, против количества строк в вашей сетке – Steve

ответ

0

Вы получаете это сообщение, когда вы использовали индекс на массиве (или сбор), что недопустимо. Например, у вас может быть массив, определенный для myArray[0] до myArray[10]. Если вы попытаетесь получить доступ к myArray[-1] или myArray[11], вы получите ошибку.

В вашем случае это может быть в строках или в наборах ячеек.

0

Зависит от того, как вы получаете SelectedRowtt. Обычно такое исключение происходит потому, что индексы начинаются с 0 и заканчиваются Rows.Count -1, и вы пытаетесь получить dgvSItt.Rows[Rows.Count].