项目中经常使用需要鼠标移动来确认选中区域内数据的和,以此判断数据的准确性。一般情况下,我常使用到的两种方式,一种方式是从一个单元格到另一个单元格形成一个区域,计算此区域内的值;另一种方式,计算选中的几个孤立的单元格,计算这些孤立的数值。
1、声明几个变量
List<TableValue > list =new List<TableValue > ();
2、项目中使用的对象属性包括以下几个:列,行和值,如下:
public class TableValue
{
public int DataGridCol { get;set; }
public int DataGridRow { get;set; }
public double DataGridValue { get;set; }
}
3、区域增加时数据计算
public List<TableValue > DataGridViewSumValue(DataGridView dgv, int col, int row)
{
TableValue tv = new TableValue();
tv.DataGridCol = col;
tv.DataGridRow = row;
if (IsNumeric(dgv[col, row].FormattedValue.ToString()))
{
tv.DataGridValue = Convert.ToDouble(dgv[col, row].FormattedValue);
}
else
{
tv.DataGridValue = 0;
}
if (list.Count > 0)
{
bool addTolist = true;
for (int i = 0; i < list.Count; i++)//拒绝重复单元格
{
if (list[i].DataGridCol == col && list[i].DataGridRow == row)
{
addTolist = false;
break;
}
}
if (addTolist)
{
list.Add(tv);
}
}
else
{
list.Add(tv);
}
return list;
}
选中区域减少时,就是将容器中的对应数据扣除。这里就不再展开了。
4、DataGridView中使用到的事件
dataGridView1_CellMouseDown//使用的时候确认使用哪个鼠标,用于计算孤立的单元格;
dataGridView1_CellMouseMove//鼠标拖动,用于计算区域内数值
//我是使用Ctr+鼠标左键来确定对数据进行求和的
dataGridView1_KeyDown //按键落下开始计算
dataGridView1_KeyUp //按键抬起不再计算
如果您有更好的方法,请不吝赐教!如果您需要详细的代码,也可以私信我。不过我不常登录网站,可能回复晚,请见谅!