C# is a 110% OO language, unlike PHP. C# has events. Everything is C# is an object. In other words in OOP it is normal to be calling classes from classes. However, if something gets confusing about the flow of the program that is most likely due to a poor design or the use of crappy libraries.