Dafür gibt es Databinding.
In Windows Forms kannst Du damit Objekte und deren Eigenschaften direkt an Controls binden. Mittels entsprechender Klassen (BindingList) und Interfaces (INotifyPropertyChanged) bekommt das
GUI von Änderungen an den Objekten mittels Events mit und kann darauf reagieren. Die Objekte werden direkt vom
GUI geändert und Du kannst mittels Property Getter- und Settern reagieren.
In WPF ist das noch einfacher, dort brauchst Du diese Interfaces nicht. Damit Du eine noch sauberere Trennung hast und das
GUI nicht unmittelbar auf den Objekten herumturnt gibt es dort noch das MVVM-Pattern (Model-View - ViewModel), welches noch eine Zwischenschicht einzieht.