Можно ли заставить DataGridView, DataGridColumn, DataGridCell имитировать определенное поведение в Excel? - PullRequest
0 голосов
/ 22 августа 2011

Технологии: Visual Studio .NET 2008

Мне интересно, знает ли кто-нибудь, как заставить столбец в сетке данных вести себя так же, как в Excel.

В настоящее время данные выглядят так:

A) 123456789.02211

я бы хотел видеть

B) 123,456,789.02

Однако суть в том, что я хочу, чтобы данные выглядели как «B», когда они не используются (нет фокуса, мышь не находится в ячейке), и я хочу, чтобы данные выглядели как «A», когда они используются. (Ячейка имеет фокус, а не весь столбец.)

Если я не могу сделать конкретную клетку, это нормально. Если он такой же широкий, как «Когда dataGridview имеет фокус, все данные выглядят как A, я могу с этим справиться.

Есть идеи?

1 Ответ

1 голос
/ 22 августа 2011

Вы захотите взглянуть на события CellBeginEdit и CellEndEdit 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, чтобы гарантировать, что мой столбец даты не отформатирован.

Возможно, вам понадобятся разные строки форматирования, но это общий подход, который вы ищете.

...