C# – Cannot modify expression because it is not a variable

cuser-controlswinforms

I'm trying to get an UserControl (which has a grid on it) on a Windows Form to resize.
The below code is what I have in the Form. The behavior I'm getting is that the control is resized when I make it big. But it does not shrink. What am I doing wrong (or) What am I missing?

private void AdjustGrid()
{
    ZoomControl.Location = new Point(5, 5);
    ZoomControl.Size = new Size(this.Width - 15, this.Height - 75);
}

void zoomform_Resize(object sender, EventArgs e)
{
    AdjustGrid();
}

Now the user control has the following code:

//Resize the grid that the UserControl has on it
private void NameValuePropertyBag_Resize(object sender, EventArgs e)
{
    grdNameValueProperties.Location = new Point(4,4);
    grdNameValueProperties.Size = new Size(this.Width - 8, this.Height - 8);
}


I tried

grdNameValueProperties.Size.Width = this.Width - 8;
grdNameValueProperties.Size.Height = this.Height -8;

It gives me "Cannot modify expression because it is not a variable" error… What am I missing?

Additional Info:

I'm using SetParent() Windows call to move/zoom an UserControl to another Form (ZoomForm).

Anchor doesn't seem to work for controls moved with SetParent()… More precisely, it may be working but I have repainting problems.

I got Anchor/Dock pair to working without repaint issues [I removed the resize event wireup and adjusted Dock to Fill]

The ZoomForm initally has no controls. The Usercontrol is added to the ParentForm dynamically.

Currently, I'm able to make the zoom form bigger with the above code but not smaller.

Best Answer

grdNameValueProperties.Size.Width = this.Width - 8;
grdNameValueProperties.Size.Height = this.Height -8;

That code gives the error because Size is a value type, not a reference type. Reading this http://www.yoda.arachsys.com/csharp/parameters.html may help explain the difference between value types and reference types.