Использование обработчика событий для нескольких элементов управления в C#

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

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

Другим подходом является создание одного обработчика событий, который может выполнять работу для всех элементов управления. Затем в конструкторе форм выберите элементы управления, нажмите кнопку «События» в окне «Свойства» (маленький молния), выберите событие, откройте раскрывающийся список справа и выберите обработчик событий. Теперь все элементы управления используют один и тот же обработчик событий для события.

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

Следующий код обрабатывает Button Нажмите события для трех кнопок кнопки. Он преобразует параметр sender в Button, который поднял событие, а затем использует свойство Button Text для посмотрите, какая кнопка Button была нажата.

Вместо использования свойства Text отправителя вы можете использовать свойство Tag элемента управления. Или вы можете сравнить sender с элементами управления напрямую, как в следующем коде:

Источник: http://csharphelper.com/blog/2014/09/use-an-event-handler-for-multiple-controls-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)

Add a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *