Я использую 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;
}
}