Обновить DataGridView на CellEndEdit [дубликат]

В Java все находится в форме класса.

Если вы хотите использовать любой объект, тогда у вас есть две фазы:

  1. Объявить
  2. Инициализация

Пример:

  • Объявление: Object a;
  • Инициализация: a=new Object();

То же самое для концепции массива

  • Объявление: Item i[]=new Item[5];
  • Инициализация: i[0]=new Item();

Если вы не дают секцию инициализации, тогда возникает NullpointerException.

5
задан kennyzx 23 October 2014 в 08:53
поделиться

2 ответа

Эта ошибка вызвана

Любая операция, которая приводит к изменению активной ячейки, когда DataGridView все еще ее использует

Как принято в этой записи .

Исправление (я проверил): используйте BeginInvoke для вызова moveRowTo.

private void dataGridView2_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
    this.BeginInvoke(new MethodInvoker(() =>
        {
            moveRowTo(dataGridView2, 0, 1);
        }));
}

BeginInvoke является асинхронным вызовом, поэтому dataGridView2_CellEndEdit возвращается немедленно, и после этого выполняется moveRowTo метод, в то время dataGridView2 больше не использует текущую активную ячейку ,

16
ответ дан Community 19 August 2018 в 14:14
поделиться
if (
    (datagridview.SelectedCells[0].RowIndex != datagridview.CurrentCell.RowIndex) ||
    (datagridview.SelectedCells[0].ColumnIndex!= datagridview.CurrentCell.ColumnIndex)
   ) { return; }
-1
ответ дан Behzad 19 August 2018 в 14:14
поделиться
  • 1
    Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, как и / или почему оно решает проблему, улучшит долгосрочную ценность ответа. – Donald Duck 27 May 2017 в 11:07
Другие вопросы по тегам:

Похожие вопросы: