Ошибка в моем обработчике DataGridView EditingControlShowing (.NET) - PullRequest
0 голосов
/ 22 июля 2009

У меня есть DataGridView и обработчик события EditingControlShowing, который используется для добавления или удаления обработчиков события keyUp для некоторых столбцов. Проблема иногда в столбце, который не имеет связанного обработчика KeyUp, фактически запускает обработчик. Кажется, что сетка не знает, какой столбец должен запускать какой обработчик.

Проблема: Когда я набираю в column2 (не column1), строка, которая удаляет обработчик KeyUp, запускается ... пока все хорошо. Но тогда Control_KeyUp запускается! Control_KeyUp только для Column1.

Есть ли способ узнать, есть ли у столбца (или ячейки?) Обработчики, прикрепленные к нему?

    private void  MyGrid_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
  {
   string columnName = MyGrid.Columns[MyGrid.CurrentCell.ColumnIndex].Name;
   if (columnName == "column1")
        e.Control.KeyPress += new KeyPressEventHandler(Control_KeyUp);
    else
        e.Control.KeyPress -= new KeyPressEventHandler(Control_KeyUp);
    ......

    }

1 Ответ

1 голос
/ 22 июля 2009

Вот похожий вопрос, который вы можете найти полезным:

События EditingControlShowing запускаются несколько раз

С MSDN :

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

Надеюсь, что это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...