1

我正在创建一个 Windows 窗体应用程序,或多或少充当我们用户的 SQL 数据库的接口。当他们查看表单时,我想将浮点数格式化为 1 或 2 位小数,但如果他们愿意,我也希望能够将 DataGridView 复制到具有完整浮点数的 excel 中。

例如,如果我将行格式化为带 1 个小数位的百分比,我将使用

DataGridView1.Rows[i].DefaultCellStyle.Format = "P1";

这在表单中看起来很棒,但是当我将 DataGridView 复制到剪贴板时,它只复制 1 个小数位,即使我用作源的 DataTable 中的浮点数具有更多小数位。

我无法弄清楚如何将未格式化的数据复制到剪贴板。我什至考虑过制作一个复制按钮来访问未格式化的不可见 DataGridView,但我希望用户能够从可见的格式化 DataGridView 中使用 Ctrl-C。

有任何想法吗?即使让我知道我不走运也会有所帮助,因为我将放弃 Ctrl-C 功能而只创建一个单独的 Copy 功能。谢谢。

4

1 回答 1

1

不允许用户复制与所显示内容不同的内容(1 位十进制值)。获得所需内容的解决方法可能是启用两种不同的“模式”来显示单元格中的信息:短格式和长格式。并添加了一种用户友好的方式来在两种模式之间切换;例如:在单元格中按“Enter”。示例代码:

private void dataGridView1_KeyDown(Object sender, System.Windows.Forms.KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        if (shortMode)
        {
            dataGridView1.Rows[curRow].DefaultCellStyle.Format = ""; //Number with all the decimals
            shortMode = false;
        }
        else
        {
            dataGridView1.Rows[curRow].DefaultCellStyle.Format = "P1"; //Number as percentage with 1 decimal
            shortMode = true;
        }
    }
}

whereshortMode是全局声明的布尔变量,curRow是您要更改的行。

于 2013-08-26T15:27:01.967 回答