UpdateCellValue () в сетке данных - PullRequest
2 голосов
/ 01 июня 2009

Я использую следующий код для обновления значения ячейки DataGridView. Это вызывается внутри обработчика событий CellDoubleClick для DataGridView.

Проблема в том, что ячейка обновляется только после того, как я нажимаю на другую ячейку. Есть ли лучший способ сделать это?

string value = "";
if (_dataGrid1.CurrentRow.Cells[e.ColumnIndex].Value != null)
    value = _dataGrid1.CurrentRow.Cells[e.ColumnIndex].Value.ToString();

FormEdit form = new FormEdit(value); // takes a string value
if (form.ShowDialog() == DialogResult.OK)
{
    _dataGrid1.CurrentRow.Cells[e.ColumnIndex].Value = form.SourceText;
    _dataGrid1.UpdateCellValue(e.ColumnIndex, e.RowIndex);
}

Некоторые имена переменных были изменены для защиты их идентичности

Ответы [ 3 ]

0 голосов
/ 04 июля 2009

Попробуйте вызвать Обновить на элементе управления. Данные могут быть обновлены, но визуальное представление не может быть перерисовано до щелчка в другом месте.

0 голосов
/ 29 октября 2009

Я вернулся к проекту, что это на сегодня, и обнаружил, что мой ответ был легок. Решение было приостановлено / ResumeLayout:

if (form.ShowDialog() == DialogResult.OK)
{
    _dataGridView.SuspendLayout();

    _dataGridView.CurrentRow.Cells[e.ColumnIndex].Value = form.TextBoxText;
    _dataGridView.UpdateCellValue(e.ColumnIndex, e.RowIndex);

    _dataGridView.ResumeLayout(true);
}

Это было для двойного щелчка по ячейке сетки и редактирования содержимого в модальной форме с текстовым полем.

0 голосов
/ 04 июля 2009

Решает ли вызов _dataGrid1.CommitEdit проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...