Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Web控件是否包含另一个Web控件?_C#_Asp.net - Fatal编程技术网

C# Web控件是否包含另一个Web控件?

C# Web控件是否包含另一个Web控件?,c#,asp.net,C#,Asp.net,我想定制一个网络控制,可以这样使用: <cc1:TitleEx runat="server" Theme="Sky" DemoUrl="what.swf" Left="150" Width="250"> <asp:Literal ID="Literal1" runat="server"></asp:Literal> </cc1:TitleEx> 基类是: [Bindable(true)] [Category("Appearanc

我想定制一个网络控制,可以这样使用:

<cc1:TitleEx runat="server" Theme="Sky" DemoUrl="what.swf" Left="150" Width="250">
       <asp:Literal ID="Literal1" runat="server"></asp:Literal>
</cc1:TitleEx>

基类是:

[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
[PersistenceMode(PersistenceMode.InnerDefaultProperty)]
public string Text
{
   get
   {
    String s = (String)ViewState["Text"];
    return ((s == null) ? String.Empty : s);
   }
   set
   {
    if (this.HasControls())
     {
        this.Controls.Clear();
     }
    ViewState["Text"] = value;
   }
  }

/// <summary>
/// child control's content
/// </summary>
protected StringBuilder HtmlContent = new StringBuilder();

protected override void AddParsedSubObject(object obj)
{
  if (obj is LiteralControl)
  {
    HtmlContent.Append(((LiteralControl)obj).Text);
    this.Text = HtmlContent.ToString();
  }
  else
  {
   if (obj != null)
   {
     HtmlContent.Append(GetControlHtml(obj as Control));
     this.Text = HtmlContent.ToString();
   }
  }
}

/// <summary>
/// get the child controls' html
/// </summary>
protected string GetControlHtml(Control ctl)
{
   StringBuilder sb = new StringBuilder();
   StringWriter tw = new StringWriter();
   HtmlTextWriter writer = new HtmlTextWriter(tw);
   ctl.RenderControl(writer);
   sb.Append(writer.InnerWriter.ToString());
   return sb.ToString();
}
[Bindable(true)]
[类别(“外观”)]
[默认值(“”)
[可本地化(正确)]
[PersistenceMode(PersistenceMode.InnerDefaultProperty)]
公共字符串文本
{
得到
{
字符串s=(字符串)视图状态[“文本”];
返回((s==null)?字符串。空:s);
}
设置
{
if(this.HasControls())
{
this.Controls.Clear();
}
ViewState[“文本”]=值;
}
}
/// 
///子控件的内容
/// 
受保护的StringBuilder HtmlContent=新StringBuilder();
受保护的覆盖无效AddParsedSubObject(对象obj)
{
if(obj是文字控制)
{
HtmlContent.Append(((LiteralControl)obj.Text);
this.Text=HtmlContent.ToString();
}
其他的
{
如果(obj!=null)
{
Append(GetControlHtml(obj作为控件));
this.Text=HtmlContent.ToString();
}
}
}
/// 
///获取子控件的html
/// 
受保护字符串GetControlHtml(控制ctl)
{
StringBuilder sb=新的StringBuilder();
StringWriter tw=新的StringWriter();
HtmlTextWriter writer=新的HtmlTextWriter(tw);
控制渲染控制(编写器);
sb.Append(writer.InnerWriter.ToString());
使某人返回字符串();
}
我的问题是当我在
Page\u Load()
中将字符串设置为此文本控件时,该字符串无法显示。我还尝试在
OnPreInit()
OnPreLoad()
中设置值,但仍然没有任何运气

以前有没有人遇到过这个问题


你是如何解决这个问题的?

我已经通过面板找到了答案。 这是我的解决办法。http://www.cnblogs.com/coolkiss/archive/2010/12/30/1921494.html