Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在左单元格FOU上发生ArgumentOutOfRange异常_C#_Winforms_Datagridview - Fatal编程技术网

C# 在左单元格FOU上发生ArgumentOutOfRange异常

C# 在左单元格FOU上发生ArgumentOutOfRange异常,c#,winforms,datagridview,C#,Winforms,Datagridview,当用户单击单元格时,当它有焦点时,如果我想打开另一个文件,我会收到一条错误消息参数超出范围异常错误 我已经添加了try catch&data Error事件处理程序,但仍然收到此错误。我怎样才能解决这个问题 private void datagridview_CellValidating(object sender, CellValidatingEventArgs e) { try { if (e.ColumnIndex == 2 || e.ColumnIndex == 3) {

当用户单击单元格时,当它有焦点时,如果我想打开另一个文件,我会收到一条错误消息
参数超出范围异常错误
我已经添加了
try catch&data Error事件处理程序
,但仍然收到此错误。我怎样才能解决这个问题

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)
{

}
private void datagridview\u CellValidating(对象发送方,CellValidatingEventArgs e)
{
尝试
{
如果(e.ColumnIndex==2 | | e.ColumnIndex==3)
{
datagridview.Rows[e.RowIndex].ErrorText=“”;
整数;
if(datagridview.Rows[e.RowIndex].IsModified)
返回;
如果(!int.TryParse(e.Value.ToString(),
out newInteger)| | newInteger<-50000 | | newInteger>50000)
{
e、 取消=真;
字符串errorMessage=d_LanguageDropDownList.SelectedItem.ToString()=“法语”?“企业价值中心-50000 et 50000”
:“输入-50000到50000之间的十进制值”;
datagridview.Rows[e.RowIndex].ErrorText=ErrorMessage;
}
}
}
捕获(异常)
{
}
}
私有void datagridview_DataError(对象发送方,GridViewDataErrorEventArgs e)
{
}

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


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

对不起,我上传了错误的图片,我已更改了它。请检查它。在这一行
datagridview.Rows[e.RowIndex].ErrorText=“”我收到错误消息。请将
e.RowIndex
保持在有效值范围内。类似这样的
如果(e.RowIndex>=0&&e.RowIndex<6)
//做这些事情(这是粗略的代码)是的,它可以工作。您能告诉我这背后的原因是什么吗?我认为当它来自事件args时,
RowIndex
总是在范围内。是否有可能是另一个线程同时删除了一些行,或者您访问了一个错误的网格视图实例?是的,这是_Green先生向我解释的。谢谢。我认为即使行索引是
-1
,也不应该发生异常?(这里异常超出范围)如果(Double.Parse(e.Value.ToString())@Mr_Green:
SecondaryRadGridView.Rows[e.RowIndex],我如何处理这一行的
格式异常如果
e.RowIndex
-1
@linguini,则
将引发异常:是的,使用
TryParse
而不是
Parse
,因为
Parse
将引发
FormatException
如果要解析的值不能解析为
double