[英]Argument Out of range exception Error
直到昨天,下面的代碼仍然可以正常工作,但是今天,我收到一條錯誤消息,參數超出異常,索引超出范圍。
我要在這里嘗試從最后一行的index 3(4th col)
取該單元格值並放入col 3 (index 2) cell
。 當我在最后一個單元格(從底部到頂部)中鍵入它時,我收到了以上錯誤消息。
請幫我。
private void datagridview_CellValidated(object sender, CellValidatedEventArgs e)
{
if (e.ColumnIndex != 3)
return;
int nextRowIndex = e.RowIndex -1;
int lastRowIndex = datagridview.Rows.Count;
try
{
if (nextRowIndex <= lastRowIndex)
{
var valuesForcell = datagridview.Rows[e.RowIndex].Cells[3].Value.ToString();
datagridview.Rows[nextRowIndex].Cells[2].Value = valuesForcell;
datagridview.Rows[nextRowIndex].Cells[2].ReadOnly = true;
datagridview.Rows[nextRowIndex].Cells[2].Style.ForeColor = Color.MediumVioletRed;
datagridview.ClearSelection();
datagridview.SelectionMode = GridViewSelectionMode.CellSelect;
datagridview.Rows[nextRowIndex].Cells[3].BeginEdit();
}
}
catch (Exception exception) { }
}
如果我理解得不錯,您應該具有:
private void datagridview_CellValidated(object sender, CellValidatedEventArgs e)
{
if (e.ColumnIndex != 3)
return;
int nextRowIndex = e.RowIndex -1;
try
{
if (nextRowIndex >=0 )
{
var valuesForcell = datagridview.Rows[e.RowIndex].Cells[3].Value.ToString();
datagridview.Rows[nextRowIndex].Cells[2].Value = valuesForcell;
datagridview.Rows[nextRowIndex].Cells[2].ReadOnly = true;
datagridview.Rows[nextRowIndex].Cells[2].Style.ForeColor = Color.MediumVioletRed;
datagridview.ClearSelection();
datagridview.SelectionMode = GridViewSelectionMode.CellSelect;
datagridview.Rows[nextRowIndex].Cells[3].BeginEdit();
}
}
catch (Exception exception) { }
}
您是自下而上地移動價值觀嗎?
如果e.RowIndex
返回第一e.RowIndex
0
,則您的nextRowIndex
將設置為-1
,這是錯誤的。
並且您的lastRowIndex
應該比行數少一個。
int lastRowIndex = datagridview.Rows.Count - 1;
我發現您沒有引用lastRowIndex
上的行,可以將檢查修改為:
if (nextRowIndex < lastRowIndex)
似乎您正在驗證第0行中的單元格,因此nextRowIndex
計算結果為-1
,這顯然不是有效的數組索引。
將您的if
語句更改為以下內容:
if ((nextRowIndex < lastRowIndex) && (nextRowIndex >= -1))
如果要包括Rowheader
則-1
是有效的rowIndex。
如果您不想包括RowHeader
則將-1
替換為0
。
希望這可以幫助。
當您的e.RowIndex
為0
, nextRowIndex
為-1
並且您正在嘗試訪問
datagridview.Rows[-1].Cells[2].Value = valuesForcell;
引發異常
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.