В вашем случае события бесполезны.
События используются для того, чтобы код других людей воздействовал на ваш код.Вы бы организовали событие, чтобы рассказать миру о том, что делает ваш код.Вы можете создать событие для изменения цвета, которое вы можете вызывать каждый раз, когда цвет меняется каким-либо образом, но это не будет для вашей выгоды и будет просто использоваться любым другим фрагментом кода, который использует ваш класс и хочет что-то сделать, когдацвет меняется.
События для внешнего кода, а не для внутреннего управления классами.Как сказал человек передо мной, проблема, с которой вы сталкиваетесь, является скорее проблемой инкапсуляции, которую вы можете решить двумя способами:
1) Обновлять внутреннюю переменную каждый раз, когда что-то меняется, как вы делаете.Но я предлагаю сделать внутреннюю приватную функцию ColorChanged (), которая будет пересчитывать цвет, как вы делаете.Я говорю: создайте функцию, потому что позже, если вы хотите больше логики при смене цвета, вам не придется беспокоиться об изменении его в 3 местах.
2) Обновляйте, когда цвет, когда он есть,переоформлен (как человек до меня).Создайте свойство, которое вычисляет цвет при каждом обращении к нему.Это самое простое и в большинстве случаев работает отлично.Но если вы используете это свойство LOT, то все эти повторные вычисления могут быть проблемой производительности (в этом случае вычисление цвета не очень интенсивно, так что это не имеет значения).
В этом случае я бы сделал вариант 2ради простоты, несмотря на крошечный недостаток производительности ... и я имею в виду крошечный недостаток производительности ...