It’s a bit tricky to email over as there are a number of inter dependencies, the bit that is causing me the problem:

public override RectangleF Bounds

{

get

{

return base.Bounds;

}

set

{

RectangleF origBounds = this.Bounds;

base.Bounds = value;

SizeF moveVector = new SizeF(this.Position) - new SizeF(origBounds.Location);

SizeF widthResizeVector = new SizeF(this.Width - origBounds.Width, 0);

//Anchored top-right.

Translate(moveVector + widthResizeVector, this.errorFrame);

Translate(moveVector + widthResizeVector, this.tempErrorFrame);

```
if(LeftPort != null)
LeftPort.Bounds = value;
if(RightPort != null)
RightPort.Bounds = value;
}
}
```

then on a Sub class:

public override RectangleF Bounds

{

get { return base.Bounds; }

set

{

SizeF origLoc = new SizeF(this.Position);

base.Bounds = value;

SizeF moveVector = new SizeF(this.Position) - origLoc;

//this.title.Position += moveVector;

if (this.Relationships != null)

{

this.Relationships.ForEach(r => r.Position += moveVector);

}

if (this.toggleArrow != null)

{

this.toggleArrow.Location += moveVector;

}

if (this.relationshipImage != null)

{

this.relationshipImage.Location += moveVector;

}

```
GoHeadingText label = this.Label as GoHeadingText;
if (label != null)
{
if (label.SetLabelBounds == false)
{
float x = this.Bounds.Left;
float y = this.Bounds.Top + this.TopLeftMargin.Height;
float width = this.Bounds.Width - this.TopLeftMargin.Width;
float height = MinHeight - this.TopLeftMargin.Height;
RectangleF newBounds = new RectangleF(x, y, width, height);
if (this.LeftPort != null)
{
this.LeftPort.Bounds = newBounds;
}
if (this.RightPort != null)
{
this.RightPort.Bounds = newBounds;
}
newBounds.X += this.TopLeftMargin.Width;
label.SetBounds(newBounds);
}
}
}
```

}