Я использую DGV в приложении winforms. Я хотел изменить статус строки с New (IsNewRow) на отредактированный. Всякий раз, когда мы начинаем вводить значения в последнюю строку DGV, она создает еще одну строку ниже строки редактирования, задавая для свойства IsNewRow текущей строки значение false.
В моем требовании, когда пользователь находится в последней строке и если нажата F6, я копирую пару значений ячеек из строки выше в текущую строку. В этот момент текущая строка все еще находится в состоянии Новая строка (IsNewRow=true). Как только я скопирую значения в текущую строку из строки выше, я хочу изменить статус текущей строки на отредактированный, чтобы DGV создал другую строку ниже текущей строки как новую строку. Не уверен, какое событие заставляет DGV создать новую строку, поэтому, пожалуйста, помогите мне в этом.
Могу ли я изменить статус текущей строки? Свойство IsNewRow доступно только для чтения, поэтому его нельзя изменить.
Обновление: я нашел способ установить текущий статус строки (IsNewRow=false). Используйте следующий метод: MyGridView.NotifyCurrentCellDirty(true);
.
По крайней мере, я хотел бы имитировать нажатие клавиши, чтобы обмануть DGV и создать еще одну строку, отредактировав эту строку. Кто-нибудь может сказать мне, как это сделать в DGV?
Этот DGV не привязан к данным.
Ниже приведен код, используемый для копирования значений из строки выше в текущую строку:
switch (e.KeyData)
{
case Keys.F6: //Copy the row above.
if (MyGridView.CurrentRow != null && MyGridView.CurrentRow.Index > 0)
{
MyGridView.CurrentRow.Cells[CustomColumn.Index].Value
= MyGridView.Rows[rowIndex - 1].Cells[Customer.Index].Value;
MyGridView.CurrentRow.Cells[DateColumn.Index].Value
= MyGridView.Rows[rowIndex - 1].Cells[DateColumn.Index].Value;
MyGridView.CurrentRow.Cells[RefColumn.Index].Value
= MyGridView.Rows[rowIndex - 1].Cells[RefColumn.Index].Value;
}
}
MyGridView.NotifyCurrentCellDirty(true);
- person Sal   schedule 04.11.2019