Since there's a grid, I suppose you have multiple rows in it. Otherwise this could be overkill:
Change your way of thinking from a UI-centric model to an object oriented model.
So you have an object with four properties. Actually, you have a class with four properties that you will instantiate multiple times. Group those objects in one
BindingList<t>[
^] where
T is your class.
Implement the desired behaviour (computation of 4th property based on first three properties).
Bind the BindingList to your Grid, to the CheckedListBox, to whatever. All those UI elements should work on the same data (which is the underlying list of objects). Since all UI-induced changes affect that same data, changes of the data get displayed in all bound UI elements.
I'm not sure, but eventually you have to implement the
INotifyPropertyChanged[
^] interface for your object.