I remember an early Java GUI framework that had no concept of delegates or command routing. In order to make a button that does something, you had to subclass Button and override the click method. You ended up with lots and lots of UI element subclasses with little bits of your application code in them.
The code that handles that click has to go somewhere, and in an OO language like Java or C# it has to go on a class, but delegates allow it to happen on convenient place. That often leads to having too much code doing too many different things in a form class, but that's a different issue.