if you were loading it for the first time in page_init during a postback it would. The properties that determine which subcontrols show up are not looked at ,at all, if the page is in postback.
My situation is that I have a auto-postback dropdown list of a series of templates. Each instance of the template stores the data into an XML file.
When I choose the template I want - it determines which controls to show, anything from the URL control for choosing an image to a rich text box for including text.
This data is then stored into the XML. The XML is later displayed via XSLT (so it would be hard to handle the FileID=# at that time).
The post back issue is pretty easily resolved by taking out the if statement. I haven't done extensive testing on the effects but all the code within the If block has to do with the display of the control.
I had a similar issue with the TextEditor control where I coudln't set the Text of that control until it had been added to the page, because the Text property writes directly to the Text property of the RichTextControl which isn't added until the Page_init event (it should probably be added in a constructor, or alternatively the TextEditor should store the value and assign it to the richtextcontrol at Pre_render).
You may be right that it is not a bug, but I think it is relatively poor implementation/design for a resusable control.
Generally a property should return what you put into it. if A=B and B= C then A= C. (or in this case if urlControl.Url = "images/myImage.jpg" and "File=8" = urlControl.Url then "images/myImage.jpg" <> "File=8" and urlControl.Url <> urlControl.Url )
I also think those controls (all the ones being provided as reusable controls - ie in the /controls folder) should be adjusted so that any display settings are resolved at Pre-render rather that in the Load event. Even if you remove the if statement. If someone wants to adjust the control settings during an event of a separate control (during postback) setting the property will do no good because those properties were already evaluated during Load and the Events fire after that.