0

テクノロジ:Visual Studio .NET 2008

datagridviewの列をExcelと同じように動作させる方法を誰かが知っているかどうか疑問に思います。

現在、データは次のようになっています。

A) 123456789.02211

私が見たいのは

B) 123,456,789.02

ただし、キャッチは、使用していないときはデータを「B」のように見せたい(フォーカスがない、マウスがセルにない)、使用しているときはデータを「A」のように見せたいということです。(セルにはフォーカスがあり、列全体ではありません。)

特定のセルを実行できない場合は、それで問題ありません。「dataGridviewにフォーカスがある場合、すべてのデータはAのように見えますが、それを処理できます。

何か案は?

4

1 に答える 1

1

CellBeginEditDataGridViewとCellEndEditイベントを確認することをお勧めします。この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とイベントの両方にCellEndEditEventArgプロパティがあり、セルをフォーマットするかどうか(および/またはその方法)を決定するために使用できます。私の例では、e.ColumnIndexプロパティを使用して、日付列がフォーマットされていないことを確認しています。

別のフォーマット文字列が必要になる場合がありますが、これはあなたが探している一般的なアプローチです。

于 2011-08-22T17:49:58.637 に答える