У меня есть DataGridView, и я хочу подключиться к событию CellEndEdit. Мне удалось подключиться к событию CellContentClick, но у меня проблемы с CellEndEdit.

Я добавил в свой файл Form1.cs следующий код:

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellCancelEventArgs e)
        {
            dataGridView1[0, 0].Value = "Changed";
        }

С этим кодом ничего не происходит, когда я заканчиваю редактировать ячейку. Что еще мне нужно сделать, чтобы успешно подключиться к этому событию? Я вижу, что у CellContentClick есть

this.dataGridView1.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellContentClick);

Строка кода в файле Form1.Designer.cs, но я попытался имитировать это для CellEndEdit и получил ошибку компиляции

(Нет перегрузки для 'dataGridView1_CellEndEdit' соответствует делегату 'System.Windows.Forms.DataGridViewCellEventHandler')

0
Brandon 27 Янв 2010 в 17:49

2 ответа

Лучший ответ

Вы можете реализовать это самостоятельно.

В вашем конструкторе может быть метод HookEvents (), который связывает такие события.

Или в конструкторе форм щелкните вид сетки, чтобы выбрать его, перейдите в окно свойств и щелкните желтый значок молнии, чтобы найти список событий. Затем прокрутите вниз и найдите событие CellEndEdit и дважды щелкните его - это подключит событие для вас.

Чтобы подключить его самостоятельно, это может выглядеть так:

class A : Form
{
  public A()
  {
    Initialize();
    HookEvents();
  }

  private void HookEvents()
  {
    dataGridView1.CellEndEdit += dataGridView1_CellEndEdit;
  }
}
2
Antony Koch 27 Янв 2010 в 20:17

Я очень сомневаюсь, что ваше решение сработает.

Дело не в том, где вы размещаете подписку, а в том, как вы это делаете.

Брэндон, вы объявляете EventHandler, то есть функцию, отвечающую за выполнение того, что вы хотите сделать в случае этого события «dataGridView1_CellEndEdit», но вы не подписываетесь на это событие. Также в вашей функции вы передаете неправильные параметры.

Простое решение - либо подписаться из окна дизайнера, либо сделать это с помощью кода:

Напишите «dataGridView1.CellEndEdit + =», а затем дважды нажмите кнопку TAB. Это должно создать код для подписки на событие и правильный делегат для его обработки.

0
Juan Nunez 16 Июн 2010 в 11:15