Visual studio 2008 是否可以使DataGridView、DataGridColumn、DataGridCell模拟excel中的特定行为?

Visual studio 2008 是否可以使DataGridView、DataGridColumn、DataGridCell模拟excel中的特定行为?,visual-studio-2008,datagridview,datagridcolumn,datagridcell,Visual Studio 2008,Datagridview,Datagridcolumn,Datagridcell,技术:VisualStudio.NET2008 我想知道是否有人知道一种方法可以强制datagridview中的列与Excel的行为类似 目前,数据是这样的: A) 123456789.02211 我想看到的是 B) 123,456,789.02 然而,关键是,我希望数据在不使用时看起来像“B”(无焦点,鼠标不在单元格中),我希望数据在使用时看起来像“A”。(单元格有焦点,而不是整个列。) 如果我不能做特定的细胞,那很好。如果它像“当dataGridview有焦点时,所有数据看起来都像一个,

技术:VisualStudio.NET2008

我想知道是否有人知道一种方法可以强制datagridview中的列与Excel的行为类似

目前,数据是这样的:

A) 123456789.02211
我想看到的是

B) 123,456,789.02
然而,关键是,我希望数据在不使用时看起来像“B”(无焦点,鼠标不在单元格中),我希望数据在使用时看起来像“A”。(单元格有焦点,而不是整个列。)

如果我不能做特定的细胞,那很好。如果它像“当dataGridview有焦点时,所有数据看起来都像一个,我可以处理它


有什么想法吗?

您需要查看DataGridView的和事件。
CellBeginEdit
事件将允许您格式化要编辑的单元格,
CellEndEdit
事件将允许您在编辑完成后重置单元格的格式

像这样:

private void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e) {
    if (e.ColumnIndex != indexOfMyDateColumn) {    // Don't custom format all columns.
        dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style = new DataGridViewCellStyle() { Format = "F5" };
    }
}

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e) {
    if (e.ColumnIndex != indexOfMyDateColumn) {    // Don't custom format all columns.
       dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style = new DataGridViewCellStyle { Format = "N2" };
    }
}
CellBeginEdit
CellEndEdit
事件都有EventArg属性,可用于确定是否(和/或如何)格式化单元格。我的示例使用
e.ColumnIndex
属性确保未格式化我的日期列


您可能需要不同的格式字符串,但这是您正在寻找的通用方法。

请查看
Me.myDataGridView.Columns(x).DefaultCellStyle.Format
我还不能测试这个,但是当你输入CellBeginEdit并更改格式时,它会保留所有的小数吗?@Christian Yep。像这样更改
Style
属性不会影响基础数据。试试吧。我的应用程序中还有一些更紧迫的问题,但一旦这些问题解决了,我就不知道了我会试一试,但看起来这就是答案。我会在试用后确认。因此,这似乎是一个很好的解决方案,但我的问题是,它不会在启动时格式化值,并且新版本不允许用户编辑单元格,只需选择它。我将事件更改为CellClick和CellLeave,这很有效,但我想我已经成功了ould已经提到,还有一列的日期被弄乱了。我将尝试将更改集中在两列上。您能不能在填充DGV的同时设置单元格格式?