Problem with properties

First I thought it had something to do with that new "automatic properties" feature of C#, but when I used the normal scheme for properties I got the same error message : Cannot modify the return value of 'AxisTest.Form1.Axis.XOrg' because it is not a variable
Wonder what is wrong here.
I tried a few things, my code is a bit of a mess but here it is :

public partial class FormCallback : Form, IClearTextBox
{
private Point _pt;
public Point PT
{
get { return _pt; } //returns a COPY of the struct
set { _pt = value; }
}
public FormCallback()
{
InitializeComponent();
this.PT = new Point();
PT.X = 5; //PT. returns a copy, then you set the copies X to 5. The changes are not
//retained thus the compiler stops you from doing it because you want to change
//the original, but you're actually changing a copy.
}

Since the Point is a property and you're returning it with get { return X; } it is actually returning a copy of the struct. The compiler is stopping you from making changes to a copy of a struct since you meant to modify the original value. Can you imagine if it let you do this how perplexed you would be figuring out why the value did not set? :(

As you can see above they have static members declare inside of the struct to keep the .NET framework organized. The properties for Color.R or Color.G are all read-only but if they had a set accessor you would get the error when you called this.Color.R = 5; since the Get() access returns a copy. In this case you are assigning a new instance however.