C# 在gridview中显示每个选定行的价格

C# 在gridview中显示每个选定行的价格,c#,winforms,gridview,C#,Winforms,Gridview,想要在标签中显示datagridview中所选商品的价格。现在我使用循环来显示价格,但它只给我第一个选择的价格 显示价格的代码 int selectedCellCount = dataGridView1.GetCellCount(DataGridViewElementStates.Selected); if (selectedCellCount > 0) { for (int i = 0; i < selectedCellCount; i++) {

想要在标签中显示datagridview中所选商品的价格。现在我使用循环来显示价格,但它只给我第一个选择的价格

显示价格的代码

int selectedCellCount = dataGridView1.GetCellCount(DataGridViewElementStates.Selected);

if (selectedCellCount > 0)
{
    for (int i = 0; i < selectedCellCount; i++)
    {

        int row = dataGridView1.SelectedCells[i].RowIndex;
        label3.Text = dataGridView1.Rows[row].Cells[3].Value.ToString();
    }

}
int-selectedCellCount=dataGridView1.GetCellCount(DataGridViewElementStates.Selected);
如果(selectedCellCount>0)
{
对于(int i=0;i

另外,如何计算输入数量的总价

List<int> indexes = dataGridView1.SelectedRows.Cast<DataGridViewRow>().Select(x => Select(x => x.Index).ToList();
int sum = 0;
for (int i = 0; i < indexes.Count; i++)
{
    // here the label text will be the last row price because you overwrite each time
    label3.Text = dataGridView1.Rows[i].Cells[3].Value.ToString();
    sum += int.Parse(dataGridView1.Rows[i].Cells[3].Value.ToString());

}
MessageBox.Show("Sum of selected rows = " + sum.ToString());
List Index=dataGridView1.SelectedRows.Cast().Select(x=>Select(x=>x.Index).ToList();
整数和=0;
for(int i=0;i
我想我从你对其中一个答案的评论中得到了你的观点。你希望每当你选择行时,所选行的价格都会显示在标签上?对

为此,您可以使用名为SelectionChanged()的DataGridView事件,因此每当您的选择发生更改时,此事件都会触发并更改标签

假设gridview只允许一个选择

private void DataGridView1_SelectionChanged(object sender, EventArgs e)
{
    DataGridViewRow row = this.dataGridView1.SelectedRows[0];
    label.Text = row.Cells[3].Value.ToString();
}

希望这对你有帮助。

这是答案。谢谢大家

private void dataGridView1_SelectionChanged(object sender, EventArgs e)
    {
        if (dataGridView1.SelectedRows.Count > 0) // make sure user select at least 1 row 
        {
           label3.Text =  dataGridView1.SelectedRows[0].Cells[3].Value + string.Empty;
        }

问题是,每次你都在为
循环重写
中的标签文本。你在循环的每次迭代中都会重写标签文本。@S.Akbari所以我需要从循环中删除标签语句并将其放在外部?@Liam是的,这是windows窗体应用程序Kay。谢谢。我认为总结没有问题,但是计算=价格*数量…如果存在
MultiSelect=False
,则当前行可以通过
dataGridView1.CurrentRow.Cells[3]获得.Value
,获取价值的最快和最简单的方法。@请告诉我们更多信息,什么代表数量?好的,例如,我有一行特定的项目,当我选择该行时,它将在标签中显示该项目的价格。当你在文本框中输入该项目所需的数量时,它将计算出项目价格*数量,以获取价格e total pricewell,一个建议,使用
javascript
进行计算…因为您没有明确告诉我们计算将如何执行-在文本框中键入数量或单击这两个按钮中的某些按钮…无论如何,通过
JS
执行计算以避免不必要的
回发
…以及在哪里显示结果?这开始聊天,也给我们提供了
html
,并解释了更多关于我和其他所有人被问到的问题。出于某种原因,它在行.Cells[3].Value中显示错误;它正在显示“无法隐式将类型对象转换为stringTry这一行。Cells[3].Value.ToString();未更改任何内容是否与将其转换为字符串相同?好的,现在当我运行winform代码时,出现以下错误System.NullReferenceException:“对象引用未设置为对象的实例。”System.Windows.Forms.DataGridViewCell.Value.get返回空值。