gridview 复制数据时粘贴板数据为源数据而非当前设置显示格式后的数据

在GridView中,使用DisplayFormat设置数据显示格式后,Ctrl+C复制的数据会是格式化后的。针对高精度数据需求,需要重写Ctrl+C事件以确保复制的是未格式化的原始数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

gridview可以通过displayformat设置显示的格式例如小数位数等,设置显示格式之后通过Ctr+C复制的时候粘贴板上的数据是设置显示格式之后的数据,目前有个项目对数据精度要求比较高,要求复制的是原始数据;这样就需要重写Ctr+C事件将原始数据复制到粘贴板上

    private void m_view_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Control && e.KeyCode == Keys.C )
            {
                GridCell[] cells = m_view.GetSelectedCells().OrderBy(u => u.RowHandle).ThenBy(u => u.Column.VisibleIndex).ToArray();
                string str = string.Empty;
                int rowIndex = 0;
                int columnIndex = 0;

                for (int i = 0; i < cells.Length; i++)
                {
                    GridCell cell = cells[i];
                    if (i == 0)
                    {
                        rowIndex = cell.RowHandle;
                        columnIndex = cell.Column.VisibleIndex;
                    }
                    int rowCz = cell.RowHandle - rowIndex;
                    int colCz = cell.Column.VisibleIndex - columnIndex;

                    string hhzbf = string.Empty;
                    if (rowCz > 0)
                    {
                        for (int j = 0; j < rowCz; j++)
                        {
                            hhzbf = hhzbf + "\n";
                        }
                    }
                    else if (colCz > 0)
                    {
                        for (int j = 0; j < colCz; j++)
                        {
                            hhzbf = hhzbf + "\t";
                        }
                    }
                    str = str + hhzbf + m_view.GetRowCellValue(cell.RowHandle, cell.Column);
                    rowIndex = cell.RowHandle;
                    columnIndex = cell.Column.VisibleIndex;
                }
                Clipboard.SetDataObject(str);
                e.Handled = true;
            }
        }
以上针对的选择样式是cell的方法,如果选择模式是row的也差不多类似

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值