日期:2014-05-18  浏览次数:20399 次

panel,imagebutton和click
在一个页面里有一个button,点击button,可以显示原来隐藏的panel,显示的同时给panel动态加载了一些imagebutton,点击其中imagebutton后panel消失,可为什么最后panel没有消失,这是怎么一回事啊?下面是我的代码:
单击button的事件
protected   void   Button2_Click(object   sender,   EventArgs   e)
        {
                if   (Panel1.Visible   ==   false)
                {
                        ImageButton   temp;
                        for   (int   i   =   1;   i   <=   24;   i++)
                        {
                                temp   =   new   ImageButton();
                                temp.ImageUrl   =   "~/pictures/face/boy/ "   +   i.ToString()   +   ".bmp ";
                                temp.BorderWidth   =   2;
                                temp.BorderColor   =   System.Drawing.Color.FromArgb(252,134,4);
                                temp.Click   +=   new   ImageClickEventHandler(image_click);//给imagebutton添加事件
                                Panel1.Controls.Add(temp);
                                if   (i   %   4   ==   0)   Panel1.Controls.Add(new   LiteralControl( " <br> "));
                        }
                        Panel1.Visible   =   true;
                }
                else   Panel1.Visible   =   false;
        }
//单击imagebutton的事件
protected   void   image_click(object   sender,   ImageClickEventArgs   e)
        {
                Panel1.Visible   =   false;
        }


------解决方案--------------------
http://www.cnblogs.com/webabcd/archive/2007/03/12/671400.html

参看一下这篇文章,一般动态控件的设置或者事件不起作用,都是源于控件和页面的生命周期关系没有处理好。
------解决方案--------------------
页面生命周期应该在PreInit之前首先经历FrameworkInitialize,这个过程中创建所有你在设计代码中声明的控件。你的Panel是在aspx上声明的,在页面每一次postback的时候都被重新创建了,你自己用代码创建的控件你自己负责重建。