Как прикрепить разные EventHandlers к комбинациям одного DataGridView - PullRequest
1 голос
/ 07 июня 2010

Я использую VS2005 (настольное приложение c # .net).Когда я добавляю eventHandler к комбо-виду datagridview, он автоматически добавляет один и тот же обработчик событий ко всем остальным комбинациям того же самого datagridview.

Мой код:

private void dgvtstestdetail_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {

        DataGridView grid = (sender as DataGridView);



        if (grid.CurrentCell.OwningColumn == grid.Columns["gdvtstd_TestParameter"])
        {

            ComboBox cb = (e.Control as ComboBox);
            cb.SelectedIndexChanged -= new EventHandler(dvgCombo_SelectedIndexChanged);
            cb.SelectedIndexChanged += new EventHandler(dvgCombo_SelectedIndexChanged);

        }
 }

Я хочу добавить разные обработчики событий в разные комбинации в datagridview.Пожалуйста, скажите мне, как я могу это сделать.

1 Ответ

0 голосов
/ 08 июня 2010

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

Самое простое - просто иметь один обработчик событий, проверить редактируемую ячейку и выполнить соответствующее действие.

public void dvgCombo_SelectedIndexedChanged()
{
    if (<condition1>)
        ExecuteConditionOneLogic();

    if (<condition2>)
        ExecuteConditionTwoLogic();

}

Более совершенным решением было бы создание собственной реализации DataGridViewColumn, которая не имеет общего элемента управления для редактирования. Я не рекомендовал бы это, если у вас действительно есть функциональность многократного использования.

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