Abuamer Ответов: 1

Как я могу скопировать Предыдущее значение ячейки в текущую ячейку в datagridview C#


у меня есть datagridview с именем Dgv_Invoice, связанный с базой данных .когда я вызываю данные в 7-й столбец в первой строке, я хочу скопировать это значение во вторую ячейку строки 7 из вышеприведенной ячейки .и в третью ячейку строки alse из вышеприведенной ячейки строки.
но он работает для всех datagridview>
я хочу только скопировать предыдущую ячейку текущую ячейку

Что я уже пробовал:

Dgv_Invoice_KeyDown частная недействительным(объект отправителя, KeyEventArgs е)
{
если (Dgv_Invoice.CurrentRow.Клетки[7].Selected == true )
{
if (e.KeyCode == ключи.Входить)
{
если(Dgv_Invoice.Строк.Граф>1)
{
for (int o = 0; o < Dgv_Invoice.Rows.Количество - 2; o++)
{
Dgv_Invoice.Строки[o+1].Ячейки[7].Значение = Dgv_Invoice.Ряда[о].Ячейки[7].Значение;

}
}
}

}
}

Richard MacCutchan

Не используйте петлю. Просто используйте инструкцию в единственном экземпляре.

1 Ответов

Рейтинг:
12

Aydin Homay

Если я правильно понял, вы хотите нажать Enter в 7-м столбце первой строки, а затем скопировать значение текущей ячейки прямо в нижнюю ячейку, и то же самое для ячейки рядом со следующей ячейкой. Проще говоря, вы хотите переместить значения 7-го столбца в 1-й строке в нижнюю 2-ю строку и значение 2-й строки в 3-ю строку. Например: если 7-й столбец вашего datagridview выглядит следующим образом:

Строка 1, Столбец 7: A
Строка 2, Столбец 7: B
Row3, Column7: С

Вы хотели бы получить нижеприведенный вывод после нажатия клавиши Enter в столбце первой строки 7:

Строка 1, Столбец 7: A
Строка 2, Столбец 7: A
Row3, Column7: Б

Если это так, то используйте следующий код:

private void Dgv_Invoice_KeyDown(object sender, KeyEventArgs e)
        {
            //The index of column involved in swap business
            int col_index = 6;
            //Total rows
            var rows = Dgv_Invoice.Rows;
            //The current row
            var current_row = Dgv_Invoice.CurrentRow;
            //The number of rows involved in swap business 
            int row_in_swap = 3;

            //Applicable rule definition
            bool applicable = rows.Count > 1 && (rows.Count - current_row.Index) > row_in_swap;
            applicable &= e.KeyCode == Keys.Enter;
            applicable &= current_row.Cells[col_index].Selected == true;

            if (applicable)
                SwapCellValues(rows, current_row, col_index);
        }

        private void SwapCellValues(DataGridViewRowCollection rows, DataGridViewRow current_row, int col_index)
        {
            var temp = rows[current_row.Index + 1].Cells[col_index].Value;
            rows[current_row.Index + 1].Cells[col_index].Value = current_row.Cells[col_index].Value;
            rows[current_row.Index + 2].Cells[col_index].Value = temp;
        }


Овации,
АХ


Abuamer

Да вы меня понимаете will.so пожалуйста, приведите мне живой пример.я буду грациозна для тебя.спасибо Вам за проявленный интерес

Abuamer

спасибо тебе, Айдын хомей . очень полезно для меня, я грациозен для тебя.спасибо тебе мой друг