Visual C # - связать обработчик события с событием CellDoubleClick - PullRequest
1 голос
/ 23 ноября 2010

Я работаю в Visual Studio и пытаюсь получить информацию из ячейки DataGridView, когда пользователь дважды щелкает по ней.Я в основном настроил событие CellDoubleClick, как и любое другое событие Click, но это, похоже, не работает.

Код:

Form1.cs

private void dataGridView1_CellDoubleClick(Object sender, DataGridViewCellEventArgs e)
    {

        System.Text.StringBuilder messageBoxCS = new System.Text.StringBuilder();
        messageBoxCS.AppendFormat("{0} = {1}", "ColumnIndex", e.ColumnIndex);
        messageBoxCS.AppendLine();
        messageBoxCS.AppendFormat("{0} = {1}", "RowIndex", e.RowIndex);
        messageBoxCS.AppendLine();
        MessageBox.Show(messageBoxCS.ToString(), "CellDoubleClick Event");
    }

Соответствующий кодв Form1.Designer.cs

this.dataGridView1.CellDoubleClick += new System.EventHandler(this.dataGridView1_CellDoubleClick);

Я получаю сообщение об ошибке в коде Form1.Designer, в котором говорится: «Нет перегрузки для dataGridView1_CellDoubleClick» соответствует делегату «System.EventHandler».

Как заставить двойной щелчок работать правильно? Спасибо.

1 Ответ

2 голосов
/ 23 ноября 2010

Событие CellDoubleClick является DataGridViewCellEventHandler, а не EventHandler`.

Вы должны добавить дескрипторы событий, используя конструктор, который автоматически будет использовать правильный тип делегата.
Вы не должны редактировать сгенерированный дизайнером код вручную.

В общем случае при добавлении обработчиков событий не следует явно создавать делегат.
Вместо этого вы можете написать

myGrid.CellDoubleClick += MyGrid_CellDoubleClick;
...