2008-09-27 2 views
0

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

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

ответ

1

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

1

В списке должно быть указано событие, так как оно изменилось.

0

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

0

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