UpdateCellValue () в сетке данных

2

Я использую следующий код для обновления значения ячейки 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);
}

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

Теги:
datagridview

3 ответа

0
Лучший ответ

Я вернулся к проекту, что это на сегодня, и наш ответ был легким. Suspend/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);
}

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

0

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

0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню