-1

編集可能なデータグリッドビューがあります。セルの値を取得してから、別のセルの値を計算しています。これを行うために、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();
}

数量を入力して、グリッドビューの合計列をクリックすると。これを修正するのを手伝ってください

4

4 に答える 4

1

私の知る限り、 int.Parse() 関数はこの種の例外を引き起こす可能性があります。

セルの値を確認しようとしましたか? 数字だけでなく、他の文字がセルにある可能性はありませんか? たとえば空白。

于 2012-06-19T09:02:47.150 に答える
0

セルに入力した値は整数として解析できないため、失敗します @ int val = int.Parse(value);

于 2012-06-19T09:01:58.197 に答える
0

Text代わりに使ってみてくださいToString()

string value = grdCaret.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.Text;

代わりに

 string value = grdCaret.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
于 2012-06-19T09:18:21.950 に答える
0

入力文字列「値」は、整数に解析できる有効な形式ではありません。これを見てみましょう: http://www.codeproject.com/Articles/32885/Difference-Between-Int32-Parse-Convert-ToInt32-and

于 2012-06-19T09:27:39.837 に答える