Vb.net 如何对DataGridView的多列值求和

Vb.net 如何对DataGridView的多列值求和,vb.net,datagridview,Vb.net,Datagridview,我正在为我的研究所做一个项目,在尝试对DataGridView列求和时遇到了问题。我需要计算总金额 这是我的密码: Private Sub add() Dim i As Integer = 0 dgvStock.Rows.Add() dgvStock.Rows(dgvStock.RowCount - 1).Cells("srno").Value = txt_billno.Text dgvStock.Rows(dgvStock.RowCount - 1).Cells

我正在为我的研究所做一个项目,在尝试对DataGridView列求和时遇到了问题。我需要计算总金额

这是我的密码:

Private Sub add()
    Dim i As Integer = 0
    dgvStock.Rows.Add()
    dgvStock.Rows(dgvStock.RowCount - 1).Cells("srno").Value = txt_billno.Text
    dgvStock.Rows(dgvStock.RowCount - 1).Cells("itemcode").Value = cmbItemCode.Text
    dgvStock.Rows(dgvStock.RowCount - 1).Cells("itemname").Value = cmbItemName.Text
    dgvStock.Rows(dgvStock.RowCount - 1).Cells("qty").Value = txtQty.Text
    dgvStock.Rows(dgvStock.RowCount - 1).Cells("Rate").Value = txtRate.Text
    dgvStock.Rows(dgvStock.RowCount - 1).Cells("Discount").Value = txtPerDisc.Text
    dgvStock.Rows(dgvStock.RowCount - 1).Cells("PerTax").Value = txtPerVat.Text
    txtAmount.Text = txtRate.Text * txtQty.Text
    txtAmount.Text -= txtPerDisc.Text
    ' txtAmount.Text += txtPerDisc.Text / 100
    dgvStock.Rows(dgvStock.RowCount - 1).Cells("Amount").Value = txtAmount.Text
    txtGridAmt.Text = dgvStock.SelectedRows(0).Cells("Amount").Value
    txtdiscRs.Text = dgvStock.SelectedRows(0).Cells("Discount").Value
    txtVatRs.Text = dgvStock.SelectedRows(0).Cells("PerTax").Value
    txtTotAmt.Text = txtGridAmt.Text
End Sub
Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
    Try
        add()
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
    'formclear()
End Sub

这是我的程序快照,它会让我的问题更清楚

您添加或减去值的方法似乎不正确。因为.Text是字符串,而不是整数。尝试更改此选项:

txtAmount.Text = txtRate.Text * txtQty.Text
txtAmount.Text -= txtPerDisc.Text
为此:

txtAmount.Text = CStr(CInt(txtRate.Text) * CInt(txtQty.Text))
txtAmount.Text = CStr(CInt(txtAmount.Text) - CInt(txtPerDisc.Text))
---编辑---

请尝试以下方法:

Dim NewRow As String() = {"", "", "", "", "", "", "", ""}
dgvStock.Rows.Add(NewRow)
---编辑2---

嗯:

删除前:

TotalAmount -= dgvStock.Rows(dgvStock.SelectedRows(0)).Cells("Amount").Value

由于您调用了
dgvStock.Rows.Add()
,最后一行现在是空的吗?你调试过它并看到它在做什么吗?我在你的代码中没有看到任何总和。你到底想总结什么?目前什么不起作用?基本上,我想将txtgridamt与txtmount相加以放入txttoamt中,但当dgv再添加一列时,单击“添加”按钮,以便我可以更新txtgridamt的值时,它保持不变。您的描述令人困惑。。。。您的意思是添加行而不是列吗?我看不到您添加了列,但new sale=新行,对吗?你想在总量文本框中看到7000行吗?谢谢,顺便说一句,我已经知道了,并改为Convert.toInt3,但我的主要目标是在dgv有新行时增加值,而我添加新行时,它会获得所选行的值。这是我程序的快照,它会让我的问题更清楚谢谢,但我无法理解你,因为您正在将空行添加到dgv。它不是在清除概念,而是在单元格中添加空字符串,这样就不会复制文本。它不是null,因为在VB中null什么都不是。对象而不是引号,如果您还没有尝试过,请这样做。:)
TotalAmount -= dgvStock.Rows(dgvStock.SelectedRows(0)).Cells("Amount").Value