在数据网格视图 C# 中使用计数器时出现问题

本文关键字:计数器 问题 数据网 数据 网格 视图 | 更新日期: 2023-09-27 17:56:54

我有datagridview表。每当用户选择行并单击"更新计数器"按钮时,窗口顶角的计数器值将更改为 1。

现在,如果用户选择同一行,计数器将增量更新,这是我不想要的。我不希望计数器在同一行选择上更新。

我的代码 -

Int32 selectedRowCount = dataGridView1.Rows.GetRowCount(DataGridViewElementStates.Selected);                       
for (int i = 0; i < selectedRowCount; i++)
{                 
  // need to insert condition so that counter is not updated when same row is selected again.
 Counter.Text = Convert.ToString(i + 1);
                    }
}

我是C#开发的新手,请提供更改。

在数据网格视图 C# 中使用计数器时出现问题

没有看到代码的其余部分,或者真正了解你在做什么(这个列表会改变吗,计数器是什么,你能轻松识别选定的行吗?),我真正能建议的只是维护一个选定行的列表,并在更新计数器之前检查它。

例如,在 对于每个:

if (selectedRows.Contains(rowIdentifier)) continue;//if you want to keep looping, otherwise break;
可以使用

DataGridViewRow 的 Tag 属性来标识已选择的行。

foreach (DataGridViewRow r in dataGridView1.SelectedRows)
  if (r.Tag!=null) { Counter.Text=int.Parse(Counter.Text)+1 ; r.Tag=True ; } 

我会添加一个条件语句来检查变量是脏的还是已经更新的。 这听起来类似于并发问题或检查并发问题,我敢肯定,如果您搜索解决并发问题的方法,使用的逻辑将是相似的。 我同意@johnc

我将利用onclick事件,然后禁用再次单击同一行的功能。

或者使用该行的其他一些唯一属性并对其进行检查。

if(row.uniqueProperty == -1)
{
    Counter.Text = Convert.ToString(i + 1);
}

基本上,我创建了一个SQL表,存储所选行中的所有值。如果所选行值是表中已存在的内容,则计数器不会更新,而计数器会在选择唯一行时更新。