C# DataGridview跳过第一行列的值

C# DataGridview跳过第一行列的值,c#,C#,dataGridview第一行列名称金额不返回值,因为插入了值 为了方便同行,我画了这个表格,因为它有助于更好地回答问题。 我在dataGridview上的表格如下: private void Form1_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Add("name",typeof(string)); dt.Columns

dataGridview第一行列名称金额不返回值,因为插入了值

为了方便同行,我画了这个表格,因为它有助于更好地回答问题。

我在dataGridview上的表格如下:

   private void Form1_Load(object sender, EventArgs e)
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("name",typeof(string));
        dt.Columns.Add("amount",typeof(decimal));
        dataGridView1.DataSource = dt;
        dataGridView1.Columns[1].DefaultCellStyle.Format = "f2";
    }
现在我准备好了表格,我的主要代码如下:

  private void dataGridView1_RowLeave(object sender, DataGridViewCellEventArgs e)
    {
        decimal sum = 0.00m;

        for (int i = 0; i < dataGridView1.Rows.Count-1; i++) 
        {
                sum = sum + Convert.ToDecimal(dataGridView1[1, i].Value);
                textBox1.Text = sum.ToString("f2");
        }
    }
1st Row column amount values is = 12
2nd Row column amount values is = 12
3rd Row column amount values is = 12
现在文本框1中显示的总数为=24,其中实际总数为=36

编码有问题,它表明dataGridview的第一行的列值不被接受。

private void dataGridView1\u RowLeave(对象发送方,DataGridViewCellEventArgs e)
private void dataGridView1_RowLeave(object sender, DataGridViewCellEventArgs e)
    {
        decimal sum = 0.00m;

        for (int i = 0; i < dataGridView1.Rows.Count; i++) 
        {
            if (dataGridView1[1, i].Value != DBNull.Value) 
            {
                sum = sum + Convert.ToDecimal(dataGridView1[1, i].Value);
                textBox1.Text = sum.ToString("f2");

            }        

        }
    }
{ 十进制和=0.00m; 对于(int i=0;i
更改发生在for循环的条件中。当循环条件为i 致以最诚挚的问候,

Iordan最佳解决方案如下:

  private void dataGridView1_CellValidated(object sender, DataGridViewCellEventArgs e)
    {
        decimal sum = 0.00m;

        for (int i = 0; i < dataGridView1.Rows.Count; i++)
        {
            if (dataGridView1[1, i].Value != DBNull.Value)
            {
                sum = sum + Convert.ToDecimal(dataGridView1[1, i].Value);
                textBox1.Text = sum.ToString("f2");

            }

        }
    }
private void dataGridView1\u CellValidated(对象发送方,DataGridViewCellEventArgs e)
{
十进制和=0.00m;
对于(int i=0;i

只需如上所述更改dataGridView事件。

@lordan,它不起作用,它的返回第一行列值为0.00,您可以尝试。@lordan,您可以尝试。这只是返回。textbox1中的0.00,我在其中的dgv first rows'列中输入值“12”。@mahesh是否可以将此代码放在其他列中,即使是因为编辑单元格的值,新值可能不会放在单元格值中,我建议将此代码放在CellEndEdit事件中
  private void dataGridView1_CellValidated(object sender, DataGridViewCellEventArgs e)
    {
        decimal sum = 0.00m;

        for (int i = 0; i < dataGridView1.Rows.Count; i++)
        {
            if (dataGridView1[1, i].Value != DBNull.Value)
            {
                sum = sum + Convert.ToDecimal(dataGridView1[1, i].Value);
                textBox1.Text = sum.ToString("f2");

            }

        }
    }