Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.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#错误:输入字符串格式不正确_C#_Datagridview - Fatal编程技术网

c#错误:输入字符串格式不正确

c#错误:输入字符串格式不正确,c#,datagridview,C#,Datagridview,我有一个可编辑的datagrid视图。我得到一个单元格的值,然后计算另一个单元格的值。为此,我处理了CellEndEdit和CellBeginEdit事件 quantity = 0, quantity1 = 0, quantity_wt1 = 0, quantity_wt = 0, ekundag = 0; private void grdCaret_CellEndEdit(object sender, DataGridViewCellEventArgs e) { try {

我有一个可编辑的datagrid视图。我得到一个单元格的值,然后计算另一个单元格的值。为此,我处理了CellEndEdit和CellBeginEdit事件

quantity = 0, quantity1 = 0, quantity_wt1 = 0, quantity_wt = 0, ekundag = 0;
private void grdCaret_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
    try
    {
        string value = grdCaret.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
        if (e.ColumnIndex == 1)
        {
            int val = int.Parse(value);
            quantity = val;
            ekundag = ekundag + quantity;
            tbTotDag_cr.Text = ekundag.ToString();
        }

        if (e.ColumnIndex == 2)
        {
            float val = float.Parse(value);
            total = val;
            ekunrakam = ekunrakam + total;
            tbTotPrice_cr.Text = ekunrakam.ToString();
        }
        grdCaret.Columns[3].ReadOnly = false;
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message.ToString());
    }
}

private void grdCaret_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
    rate = 0;
    quantity1 = quantity;
    total1 = total;
    rate = (total1 / quantity1);
    if (e.ColumnIndex == 3)
    {
        grdCaret.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = rate.ToString();
        grdCaret.Rows[e.RowIndex].Cells[e.ColumnIndex].ReadOnly = true;
        //  quantity = 0;
        //   total = 0;
    }
}
在网格中,我有数量、总数和比率列。我在这里得到了上述错误:

if (e.ColumnIndex == 1)
{
    int val = int.Parse(value);
    quantity = val;
    ekundag = ekundag + quantity;
    tbTotDag_cr.Text = ekundag.ToString();
}

当我输入quantity并单击gridview中的total列时。请帮助我解决此问题。

您在单元格中输入的值无法解析为整数,因此将失败@ int val=int.Parse(值)

AFAIK int.Parse()函数可能会导致此类异常


您是否尝试检查单元格中的值?难道不可能,单元格中还有其他字符,而不仅仅是数字吗?例如,空格

尝试使用
Text
而不是
ToString()

代替

 string value = grdCaret.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();

输入字符串“value”的格式无效,无法解析为整数。看看这个:

您是否使用了调试器来查看它是什么值?很好,那么查看该值会很有帮助。你现在有5个人/答案猜出了它的值。它正确地解析了值,但当我将该值设置为textbox时给出了异常。它试图在消息框中显示该值。我正确显示,但未能将其设置为textbox。它在“val”中为我提供了正确的值,但在将值设置为textbox时失败
 string value = grdCaret.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();