都说Control.RenderControl(HtmlTextWriter writer)是判断Control的Visible属性是否为true,如果是,则调用Control.Render(HtmlTextWriter writer),否则不调用。我用Reflector看Contorl的源码如下:
public virtual void RenderControl(HtmlTextWriter writer)
{
    this.RenderControl(writer, this.Adapter);
}protected void RenderControl(HtmlTextWriter writer, ControlAdapter adapter)
{
    if (!this.flags[0x10] && !this.flags[0x200])
    {
        HttpContext context = (this.Page == null) ? null : this.Page._context;
        if ((context != null) && context.TraceIsEnabled)
        {
            int bufferedLength = context.Response.GetBufferedLength();
            this.RenderControlInternal(writer, adapter);
            int num2 = context.Response.GetBufferedLength();
            context.Trace.AddControlSize(this.UniqueID, num2 - bufferedLength);
        }
        else
        {
            this.RenderControlInternal(writer, adapter);
        }
    }
}private void RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
{
    if (adapter != null)
    {
        adapter.BeginRender(writer);
        adapter.Render(writer);
        adapter.EndRender(writer);
    }
    else
    {
        this.Render(writer);
    }
}
这三个方法里都没有判断Control.Visible的语句啊,那Control.RenderControl(HtmlTextWriter writer)是怎么实现的呢?太奇怪了,大家快来一起探讨探讨啊!