<ul>
<li>The GoDiagram object model has a GoDocument. </li>
<li>GoViews have a reference to a GoDocument.</li>
<li>If the user does any modification on the diagramming surface, a GoDocument.Changed event is raised with the relevant information in the event arguments.</li>
</ul>

<p>I would like to be notified when some user-actions happen, so that I can confer with my Controller (disallow/cancel it if need be) and then issue view-update orders from there that actually modify the <strong>Northwoods GoDiagram</strong> third party component.<br>
The Changed event is a notification that something just happened (past tense) - Doing all of the above in the event handler results in a .... (<em>wait for it</em>)... StackOverflowException. (GoDocument.Changed handler > Updates GoDocument > Firing new Changed events.. )</p>

<p>So question, how do I get a BeforeEditing or BeforeResizing kind of notification model in GoDiagrams? Has anyone who's been there lived to tell a tale?</p>

The event arguments (GoChangedEventArgs) for the change event has a property IsBeforeChanging which indicates whether the change event was raised from the "RaiseChanging" method (true), or the RaiseChanged (false).  That should tell you whether the change has occurred yet, but I know of no way to cancel it.
The best I can suggest is instead of checking if the change is allowed and performing it, check if the change is
not
allowed, and if it isn't call the "Undo" method on the arguments in the change event.  So essentially:
```
```
OnChanged(GoChangedEventArgs e)
{
  if(NotAllowed)
  {
    e.Undo();
  }
}
```
```