Ich bevorzuge WithEvents/Handles in Situationen, wo es anwendbar ist, weil es besser ausdrückt, was der Code tun soll. Eine Einschränkung mit "WithEvents/Handles" ist, dass jedes Objekt, das Ereignisse von einem langlebigeren Objekt empfängt, IDisposable implementieren sollte und alle seine WithEvents-Variablen auf Nothing setzen sollte, wenn es entsorgt wird, um sicherzustellen, dass alle Ereignisse nicht verbunden sind. Das Entfernen von Ereignissen bei der Verwendung von AddHandler/RemoveHandler ist genauso notwendig, aber vielleicht offensichtlicher. Wenn Sie WithEvents verwenden, ist es etwas leichter zu vergessen.
Übrigens, ich kenne keine Möglichkeit, alle WithEvents-Variablen automatisch auf Nothing zu setzen. Es scheint eine häufig genug Anforderung zu sein, aber aus irgendeinem Grund hat Microsoft ein solches Feature in VB nicht aufgenommen.