如果我们要修改一个控件的属性,那么在最晚在页面的哪个事件里修改,也就是说,如果在这个事件里再不处理,那就再也不可能更改了?

解决方案 »

  1.   

    Page_Load中修改就可以
    http://msdn.microsoft.com/zh-cn/library/ms178472(VS.80).aspx
      

  2.   

    load肯定不是最晚可以修改的控件的事件。
      

  3.   

    最晚在 Render 事件里,调用 base.Render 之前
    但是!请注意,由于 SaveViewState 事件是发生在 Render 之前,因此在 Render 里对控件的修改不会被保存在 ViewState 里。看下面这个例子。在页面第一次加载时,在 PreRender 事件里修改 lblA.ForeColor,在 Render 事件里修改 lblA.BackColor,点击 Postback 按钮让页面回传后, ForeColor 被保留(在ViewState里),而 BackColor 信息丢失。ASPX 页面
    <form id="form1" runat="server">
        <asp:Label ID="lblA" runat="server" Text="AAA"></asp:Label>
        <asp:Button ID="btnPostback" runat="server" Text="Postback" />
        </form>ASPX.CS 页面
    protected override void OnPreRender(EventArgs e)
            {
                if(!Page.IsPostBack)
                    lblA.ForeColor = System.Drawing.Color.Blue;            base.OnPreRender(e);
            }        protected override void Render(HtmlTextWriter writer)
            {
                if (!Page.IsPostBack)
                    lblA.BackColor = System.Drawing.Color.Red;            base.Render(writer);
            }