I've solved the first issue by adding the following attribute to my custom
property:
[DesignerSerializationVisibility(DesignerSerializat ionVisibility.Content),
NotifyParentProperty(true),
PersistenceMode(PersistenceMode.InnerProperty)]
This causes the html in my aspx page to look like:
<myasp:MyControl id="MyControl1" runat="server" Width="88px" Height="266px">
<ControlList>
<asp:Button ID="frmControlButton0"></asp:Button>
</ControlList>
</myasp:MyControl>
But now, if I close my web form and re-open it, Visual studio can't create
the control on my page, I get an error '' could not be set on property
ControlList. What does this mean?
Here is the relevant code to my control:
[DefaultProperty("ControlList"),
ToolboxData("<{0}:MyControl runat=server></{0}:MyControl>")]
public class MyControl : System.Web.UI.WebControls.WebControl
{
private System.Web.UI.WebControls.WebControl[] pControls_m = null;
[Category("Appearance"),DefaultValue(""),
Editor(typeof(ControlListEditor),
typeof(System.Drawing.Design.UITypeEditor))]
[DesignerSerializationVisibility(DesignerSerializat ionVisibility.Content),
NotifyParentProperty(true),
PersistenceMode(PersistenceMode.InnerProperty)]
public System.Web.UI.WebControls.WebControl[] ControlList
{
get
{
return pControls_m;
}
set
{
pControls_m = value;
}
}
}
"Jeremy Chapman" <please@Idontlikespam> wrote in message
news:%2***************@TK2MSFTNGP09.phx.gbl...
I have a property will an array of webcontrols.
The control features a custom property editor which can add and remove web
controls to the array, but how do I persist the informtion by serializing
it to the aspx page?
For example, right now, here is what the html looks like when I drag my
control on to the page and add some web controls to the ControlList
property:
<myasp:MyControl id="MyControl6" runat="server" Height="32px"
Width="152px" ControlList="WebControl[] Array"></myasp:MyControl>
What I want is for the ControlList property to serialize something like:
<myasp:MyControl id="MyControl6" runat="server" Height="32px"
Width="152px">
<ControlList>
<asp:linkbutton id="LinkButton1"
runat="server">LinkButton</asp:linkbutton>
<asp:imagebutton id="ImageButton1"
runat="server"></asp:imagebutton>
<asp:button id="Button1" runat="server" Text="Button"></asp:button>
<asp:hyperlink id="HyperLink1"
runat="server">HyperLink</asp:hyperlink>
<asp:label id="Label1" runat="server">Label</asp:label>
</ControlList>
</myasp:MyControl>
Is this possible?