C# 对DataGridview中的选定单元格求和时出现问题

C# 对DataGridview中的选定单元格求和时出现问题,c#,winforms,datagrid,C#,Winforms,Datagrid,我使用此代码对所选单元格求和。它的工作很好,但当用户选择单元格时,其中的字母是抛出异常:)当选择单元格中的字母是不求和时,我该如何确保安全这是我的代码 private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) { String filterStatus = DataGridViewAutoFilterColumnHeader

我使用此代码对所选单元格求和。它的工作很好,但当用户选择单元格时,其中的字母是抛出异常:)当选择单元格中的字母是不求和时,我该如何确保安全这是我的代码

private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) 
    { 
        String filterStatus = DataGridViewAutoFilterColumnHeaderCell.GetFilterStatus(dataGridView1); 
        if (String.IsNullOrEmpty(filterStatus)) 
        { 
            showAllLabel.Visible = false; 
            filterStatusLabel.Visible = false; 
        } 
        else 
        { 
            int result = -1;
            Int32.TryParse(filterStatus, out result);
            if (result != 0)
            {
                 // it is a number
                 showAllLabel.Visible = true; 
                 filterStatusLabel.Visible = true; 
                 filterStatusLabel.Text = filterStatus; 
            }
            else
            {
                 // it can be a number yet won't help you with adding
            }
        } 
    }
 private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
    {
        String filterStatus = DataGridViewAutoFilterColumnHeaderCell.GetFilterStatus(dataGridView1);
        if (String.IsNullOrEmpty(filterStatus))
        {
            showAllLabel.Visible = false;
            filterStatusLabel.Visible = false;
        }
        else
        {
            showAllLabel.Visible = true;
            filterStatusLabel.Visible = true;
            filterStatusLabel.Text = filterStatus;
        }
    }

邮政编码。接受更多答案。您应该查看TryParse的返回值,而不是结果(因为零是一个数字!)private void dataGridView1_DataBindingComplete(对象发送方,DataGridViewBindingCompleteEventTarget e){String filterStatus=DataGridViewAutoFilterColumnHeaderCell.GetFilterStatus(dataGridView1);如果(String.IsNullOrEmpty(filterStatus)){showAllLabel.Visible=false;filterStatusLabel.Visible=false;}else{showallabel.Visible=true;filterStatusLabel.Visible=true;filterStatusLabel.Text=filterStatus;}}@Pabuc:Stuart是正确的,如果过滤器状态为
“0”
您的代码跳过它,但
0
是一个数字。您应该得到
bool isNum=Int32.TryParse(filterStatus,输出结果)
并在您的
中使用
isNum
,如果
是,它将跳过它,但为什么要将0添加到您的总和?x+0=x?是的,在这种情况下它是可以的,但是如果,例如,该代码被重用用于计算
平均值
?您在这里没有求和吗?我已经编辑了我的代码,但不确定这是否是您需要的..是的,Pabuc是正确的,y你不是在这里求和。顺便问一下,你在这个答案的最后一次编辑中看到我附加的过滤器示例项目了吗?-->