我想开发一个自定义控件:在客户端产生以下代码:
<div>
<b>
这里是放的其它控件产生的代码
</b>
</div>
(我让他继承div/panel  因为我希望能在这个控件里再放控件)请问我在 Render() 方法里产生了<div><b>  </b></div>
在哪里才能让它也产生其它控件产生的代码(例如我在我的控件中放了 Button)?
或者说更应该让他继承那个基础才更合适(不要跟panel样太多的属性)另外顺便问问,如果把一个.css 文件也集成了这个自定义控件里去

解决方案 »

  1.   

    给你一个例子using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.ComponentModel;
    using System.Web.UI.Design;
    using System.ComponentModel.Design;namespace FW
    {
        [Designer(typeof(ContainerControlDesigner))]
        [ParseChildren(false),PersistChildren(true)]
        public class CustomPanel:WebControl
        {
            protected override HtmlTextWriterTag TagKey
            {
                get
                {
                    return HtmlTextWriterTag.Div;
                }
            }
            protected override void RenderContents(HtmlTextWriter writer)
            {
               
                writer.RenderBeginTag(HtmlTextWriterTag.B);
                base.RenderContents(writer);
                writer.RenderEndTag();
            }
        }
    }
      

  2.   

    注意元数据 [Designer(typeof(ContainerControlDesigner))]应用了ContainerControlDesigner才能在设计时支持时支持控件的拖曳,也就是说才能往这个自定义控件里加其他控件。
    [ParseChildren(false),PersistChildren(true)]这个元数据ParseChildren为false时表示该自定义控件里面的内容解析为控件,为true则解析为属性。
    因为TarKey默认为Span,所以要重写他的标签改为Div