Yeah, it's solved, inside Visual Studio. The Designer is what does this "magic". There's an old MSDN article on doing it
here[
^]. It's FAR from a trivial thing to implement!
[EDIT]
In your updated case, the designer solution would be WAY over the top. What you have to do is keep track of those values in your control, which you're already doing!, and then just emit a formatted string that contains the standard code for setting those values. There's no reflection required to do that.
It's really as simple as:
StringBuilder sb = new StringBuilder();
sb.AppendFormat("\t{0}.SomeProperty = {1}", controlName, somePropertyValue);