给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler

自定义服务器控件的添加事件的方法。


    写自定义控件已经好久了,也有几个用得时间比较长的,但是对于“事件”一直是比较模糊,没有很详细的理解。
    
    最近升级分页控件,由于原来使用的是VB.net(在VB.net里面添加一个事件是比较容易的),现在想改用C#,而原来的方法又写得比较笨拙,想换一个更简洁一点的方法,所以不得不重新认识一下事件。看了几遍《道不远人深入解析asp.net2.0控件开发》居然没有看懂,可能是自己太笨了吧。又找到了自定义分页控件开发 看了几遍,还是比较迷糊,最后把《自定义分页控件开发》 里提供的代码down下来看了一下,终于有点明白了。

    先举一个简单的例子吧,我们建立一个复合控件,在CreateChildControls()里面添加两个控件,一个是Label,一个是LinkButton。我们的目的是要给自定义控件加一个事件,以便可以控制Label的Text属性。

    1、内部事件。
    这个好像是我起的名称,就是只在自定义控件的内部相应的事件,使用控件的页面不用相应相关的事件。具体一点就是要在自定义控件内部,在单击LinkButton的时候修改Label的值。  

给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandlerpublic class EventTest : WebControl, INamingContainer  
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler    给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler{
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandlerprotected override void CreateChildControls()
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler{
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            Label lbl = new Label();
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            lbl.ID = "lbl";
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            this.Controls.Add(lbl);
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            this.Controls.Add(new LiteralControl("
"));
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            LinkButton btn = new LinkButton();
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            btn.ID = "btn";
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            btn.Text = "复合控件的事件测试";
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            this.Controls.Add(btn);
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler }
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler}
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler


    编写好这段代码,然后把控件拖拽到页面里面里进行测试,运行后点击LinkButton,我们可以看到页面已经提交了,但是什么变化也没有,恩,我们还没有些事件呢。现在我们就给LinkButton加一个Click的事件。

给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandlerprotected override void CreateChildControls()
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler{
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            Label lbl = new Label();
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            lbl.ID = "lbl"; 
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            this.Controls.Add(lbl);
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            this.Controls.Add(new LiteralControl("
"));
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            LinkButton btn = new LinkButton();
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            btn.ID = "btn";
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            btn.Text = "复合控件的事件测试";
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            this.Controls.Add(btn);
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            //给按钮添加内部事件            
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            btn.Click += new EventHandler(btn_Click);
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler}
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler void btn_Click(object sender, EventArgs e)
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler{
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            Label lbl = (Label)this.FindControl("lbl");
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            lbl.Text += "控件内部的事件,hi";
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        }
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler


    再次运行网页,单击,我们看到了想要的效果。

    怎么样简单吧,但是这种方法很不灵活,如果调用控件的网页也想相应事件怎么办呢?

    2、外部事件。
    这回我们要让自定义控件的外部也能相应事件。这个理论上我们要使用委托,也就是delegate,但是系统已经为我们定义好了一个(EventHandler),我们先用现成的。

    这样我们就给自定义控件定义了一个事件,重新编译,我们可以在控件的属性里面看到这个事件。(如果您没有看到,说明没有刷新,可能需要把IDE关闭,再次打开)。
  给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler

给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandlerpublic event EventHandler myClick
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler{
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            add 给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler{
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler                Events.AddHandler(this, value);
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            }
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            remove 给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler{
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler                Events.RemoveHandler(this, value);
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            }
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        }
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler


    我们可以添加外部的响应事件了,双击,我们加上几行代码。
在使用控件的网页里填写的代码 

给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandlerprotected void EventTest1_myClick(object sender, EventArgs e)
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler{
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            Label lbl = (Label)EventTest1.FindControl("lbl");
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            lbl.Text += "外部的事件,Hello" ;
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        }
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler


    运行,奇怪还是原来的样子,外部事件并没有相应,不是加了一个事件吗?外面的事件怎么没有被调用呢?这是因为,事件先触发自定义控件内部的事件,然后再由控件内部发出“命令”,调用外部的事件,那么我们怎样才能发出这个命令呢?我们需要要添加这个函数。这个也是最让我费解的地方,可能是对委托不是很了解的原因吧。
 

给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandlerprotected void TestClick(object sender,EventArgs e)
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler{
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            EventHandler hd = (EventHandler)base.Events[this];
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            if (hd != null)
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler{
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler                hd(sender, e);
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            }
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        }
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler


    在修改一下  btn_Click() 就可以了。

给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandlervoid btn_Click(object sender, EventArgs e)
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler{
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            Label lbl = (Label)this.FindControl("lbl");
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            lbl.Text += "控件内部的事件,hi";
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            //调用外部事件
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            TestClick(sender, e);
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        }


    再次运行,OK。

    (实现了内部和外部的事件相应,但是这时候我们还没有实现传说中的接口,这是为什么呢?)

    3、“借用”事件,没有成功。

    我们再给自定义控件加上几个标签,让也可以提交表单(就是触发事件),填写如下代码。
 

给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandlerprotected override void CreateChildControls()
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler{
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler//省略。。。
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandlerthis.Controls.Add(new LiteralControl("
<a id=\"aa\" href=\"javascript:__doPostBack('EventTest1$btn','')\">aa

"));
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler}
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler


    运行OK。然后我们修改一下:__doPostBack的第二个参数,
 

给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler<a id=\"aa\" href=\"javascript:__doPostBack('EventTest1$btn','1')\">aaa>")
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler


    奇怪,再次运行的时候出现了异常,看来不让这么做呀。

    依赖别人是不行了,必须要实现自定义控件自己的事件了。我们请来 IPostBackEventHandler 帮忙。同时的href修改成
 

给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandlerthis.Controls.Add(new LiteralControl("
<a id=\"a1\" href=\"javascript:__doPostBack('"+ this.ClientID  +"','1')\">[1]

"));
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            this.Controls.Add(new LiteralControl(" <a id=\"a2\" href=\"javascript:__doPostBack('" + this.ClientID + "','2')\">[2]"));
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            this.Controls.Add(new LiteralControl(" <a id=\"a3\" href=\"javascript:__doPostBack('" + this.ClientID + "','3')\">[3]"));
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            this.Controls.Add(new LiteralControl(" <a id=\"a4\" href=\"javascript:__doPostBack('" + this.ClientID + "','4')\">[4]"));
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler


在实现 RaisePostBackEvent 函数 
 

给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandlerpublic void RaisePostBackEvent(string Index)
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler{
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            Label lbl = (Label)this.FindControl("lbl");
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            lbl.Text += "自己的事件:" + Index;
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        }
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler


    再次运行,OK。同时我们也得到了传递过来的数字(页号)。
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler
    还有一个IPostBackDataHandler接口,由于暂时没不需要,所以没有研究,等用到的时候在研究。
----------------------------------------------------------------------

给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandlervar theForm = document.forms['form1'];
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandlerif (!theForm) 给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler{
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler    theForm = document.form1;
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler}
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandlerfunction __doPostBack(eventTarget, eventArgument) 给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler{
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler    if (!theForm.onsubmit || (theForm.onsubmit() != false)) 给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler{
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        theForm.__EVENTTARGET.value = eventTarget;
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        theForm.__EVENTARGUMENT.value = eventArgument;
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        theForm.submit();
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler    }
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler}



    如果您打开IE的“查看源文件”,会看到这个js函数,这是怎么来的呢?这个是button的事件带来的,虽然后面的代码并不需要button了,但是我比较懒,不想自己输出这个js函数,所以还是保留了button的事件。

    
    好像还是说的不太清楚。自定义控件的事件已经整理清楚了,我可以修改分页控件里的代码了,原来写的比较混乱。分页控件的下一个版本(v2.0.0.3)将增加两个事件,这样就可以向吴旗娃的分页控件那样灵活使用了。

附完整代码:

给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandlernamespace JYK.Controls.Page
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler{
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler    [DefaultProperty("Text")]
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler    [ToolboxData("")]
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler    public class EventTest : WebControl , INamingContainer,IPostBackEventHandler  
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler    给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler{
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        public event EventHandler myClick
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler{
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            add
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler{
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler                Events.AddHandler(this, value);
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            }
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            remove
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler{
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler                Events.RemoveHandler(this, value);
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            }
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        }
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        protected void TestClick(object sender,EventArgs e)
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler{
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            EventHandler hd = (EventHandler)base.Events[this];
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            if (hd != null)
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler{
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler                hd(sender, e);
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            }
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        }
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        public void RaisePostBackEvent(string Index)
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler{
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            Label lbl = (Label)this.FindControl("lbl");
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            lbl.Text += "自己的事件:" + Index;
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        }
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        protected override void CreateChildControls()
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler{
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            Label lbl = new Label();
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            lbl.ID = "lbl";
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            this.Controls.Add(lbl);
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            this.Controls.Add(new LiteralControl("
"));
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            LinkButton btn = new LinkButton();
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            btn.ID = "btn";
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            btn.Text = "复合控件的事件测试";
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            this.Controls.Add(btn);
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            //给按钮添加内部事件
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            btn.Click += new EventHandler(btn_Click);
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler          this.Controls.Add(new LiteralControl("
<a id=\"aa\" href=\"javascript:__doPostBack('EventTest1$btn','')\">aa

"));
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            this.Controls.Add(new LiteralControl("
<a id=\"a1\" href=\"javascript:__doPostBack('"+ this.ClientID  +"','1')\">[1]"));
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            this.Controls.Add(new LiteralControl(" <a id=\"a2\" href=\"javascript:__doPostBack('" + this.ClientID + "','2')\">[2]"));
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            this.Controls.Add(new LiteralControl(" <a id=\"a3\" href=\"javascript:__doPostBack('" + this.ClientID + "','3')\">[3]"));
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            this.Controls.Add(new LiteralControl(" <a id=\"a4\" href=\"javascript:__doPostBack('" + this.ClientID + "','4')\">[4]"));
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        }
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        /**//// 控件内部的事件,由现有的控件的事件触发
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler         void btn_Click(object sender, EventArgs e)
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler{
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            Label lbl = (Label)this.FindControl("lbl");
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            lbl.Text += "控件内部的事件,hi";
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            //调用外部事件
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            TestClick(sender, e);
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        }
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        protected override void Render(HtmlTextWriter output)
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler{
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            if ((base.Site != null) && base.Site.DesignMode)
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler{
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler                output.Write("

事件测试

");
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            }
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            else
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler{
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler                //Page_Click();
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler                //output.Write("

");


给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler                base.Render(output);
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler                //output.Write("");
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler            }
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler        }
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler    }
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler}
给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler



上一篇:Troubleshooting:Connect-SPOService 命令失败


下一篇:C#随笔