C# 控件消失问题

控件消失原因:

  1.新控件的触发导致页面重载,该重载有没有达到原有控件的触发状态进而消失。

  2.(目前只发现这一点,后续又发现再更...)

1.示例:

ASPX:
<div>
        <!-- button按钮 -->
        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
        <!-- Panel容器,可在里面放控件 -->
        <asp:Panel ID="Panel1" runat="server"></asp:Panel>
        <!-- PlaceHolder空白占位符 -->
        <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
    </div>
/////////////////
CS:
protected void Page_Load(object sender, EventArgs e)
        {
            //
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            TextBox t = new TextBox();
            t.Text = "hello";
            // 如果下面的Panel1和PlaceHolder1同时添加t,后者会覆盖前面的并且只有一个t,因为创建的t的ID已经固定,并且网页不允许相同ID
            //this.Panel1.Controls.Add(t);
            this.PlaceHolder1.Controls.Add(t);
            Button b = new Button();
            b.Text = "hello";
            b.ID = "123";
            // 定义button的click事件。注,当用户点击该事件时,并没有使button1按钮的内容改变为"heibeibei"
            // 原因是:当点击click事件后,页面进行重新加载,而t/b属于动态创建的控件,并没有达到重载的触发条件,只会重载能够执行的页面,显示的效果是t/b全部消失
            // 如果要现实t/b可以放在Page_Load重载写这部分代码,又或者使用状态寄存(我这么菜,我也不懂诶,等我看到再更呗......)
            b.Click += (sender2, e2) =>
            {
                this.Button1.Text = "heibeibei";
            };
            this.PlaceHolder1.Controls.Add(b);
        }

猜你喜欢

转载自www.cnblogs.com/namejr/p/10632000.html