Yes, that should work: if you must do this, then I would make the setter private:
public TreeView SoftwareTree
{
get { return TreeView1; }
private set { TreeView1 = value;}
}
Normally, I would not recommend making form components available as properties. If you only need to allow a subset of TreeView functionality, then I would prefer to expose public methods ClearTree, and AddTree instead, and keep the implementation of the control internal, and private. This means that you can change how your control works internally, without ffecting anything outside.
If you do need to expose a lot of TreeView functions, it may be more reliable to expose the whole tree. I still don't like it much though!