C#DataGridView如何实现鼠标选中区域求和

    项目中经常使用需要鼠标移动来确认选中区域内数据的和,以此判断数据的准确性。一般情况下,我常使用到的两种方式,一种方式是从一个单元格到另一个单元格形成一个区域,计算此区域内的值;另一种方式,计算选中的几个孤立的单元格,计算这些孤立的数值。

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 //按键抬起不再计算

如果您有更好的方法,请不吝赐教!如果您需要详细的代码,也可以私信我。不过我不常登录网站,可能回复晚,请见谅!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值