Правильное место для вызова события?

У меня есть проект Windows Form, который я только начал. В форме у меня есть список, который я загружаю с продуктами. Когда кто-то дважды щелкает Продукт, я хочу, чтобы он вызвал событие ProductChanged. Другие вещи в моем проекте будут подписываться на это событие и обновлять такие вещи, как другие части графического интерфейса при изменении продукта.

У меня вопрос, где должно быть событие и кто должен его поднимать? Должно ли событие быть в форме и вызываться обработчиком двойного щелчка списка? Или я должен указать, где событие находится в моем классе Products, а список вызывает метод этого класса, чтобы сообщить, что продукт изменился. И тогда класс Product поднимет событие? Или это должно быть сделано по-другому?

4 ответа

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

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

Зависит от того, что означает ваше событие. Если целью является уведомление подписчиков о том, что объект Product был изменен, то он принадлежит классу Product и должен запускаться кодом внутри этого класса. Если целью является уведомление о том, что был выбран другой объект Product, он относится к представлению, которое управляет списком продуктов (вашим списком / формой).

Имя ProductChanged подразумевает, что событие происходит, пока продукт был изменен. Я бы поднял событие в классе продукта, потому что в этом случае каждое изменение будет вызывать событие. Если вы запустите его в графическом интерфейсе, а затем добавите (например) функциональность импорта, скорее всего, вы забыли запустить событие после изменения.

Другие вопросы по тегам