you can write an overloaded constructor for form 2 that takes in that value from form 1 and then populates its local properties with those and then when you want to send that new value back to form 1, you can expose a public property in form 1 and set into it. This is one way of doing it, but obviously you are having to duplicate the same properties at 2 different places.
So to improve on this, create a separate class that will have all the common data properties wrapping static variables, that you can write to and read from. Both forms would then just read and write to that property. So:
public class CommonData
{
private static int _data
public static int DataValue
{
get {return _data;}
set {_data = value;}
}
}
Form 1:
CommonData.DataValue = 2;
Form 2:
//at this point the DataValue will contain 2
CommonData.DataValue = 5;
Back into form1:
//this will now be updated to 5
int x = CommonData.DataValue
Let me know if this helps. I am sure this can be tweaked even better.