离开Cell Focus时发生了ArgumentOutOfRangeException

时间:2012-11-23 11:42:02

标签: c# winforms datagridview

当用户点击单元格时,当它关注单元格时,如果我想打开另一个文件,我收到错误消息Argument Out Of Range Exception Error 我添加了try catch & data Error event handler,但我仍然收到此错误。我该如何解决这个问题?

private void datagridview_CellValidating(object sender, CellValidatingEventArgs e)
{
try
{
    if (e.ColumnIndex == 2 || e.ColumnIndex == 3)
    {
        datagridview.Rows[e.RowIndex].ErrorText = "";
        int newInteger;
        if (datagridview.Rows[e.RowIndex].IsModified)
            return;
        if (!int.TryParse(e.Value.ToString(),
                          out newInteger) || newInteger < -50000 || newInteger > 50000)
        {
            e.Cancel = true;
            string errorMesssage = d_LanguageDropDownList.SelectedItem.ToString() == "French" ? "Entrez des valeurs décimales entre -50000 et 50000"
                          : "Enter decimal values between -50000 to 50000";
            datagridview.Rows[e.RowIndex].ErrorText = errorMesssage;
        }
    }

}
catch (Exception exception)
{
}

}
private void datagridview_DataError(object sender, GridViewDataErrorEventArgs e)
{

}

enter image description here

1 个答案:

答案 0 :(得分:1)

当网格中没有行时,或者在没有索引的“新行”上,可以调用事件。因此,在索引任何内容之前,您需要检查RowIndex是否为>= 0

如果您设置断点,您会在错误发生之前看到RowIndex-1