zoukankan      html  css  js  c++  java
  • 为用户控件 User Control添加事件(转)

    原文地址:http://www.cnblogs.com/AXzhz/archive/2007/11/02/947011.html

    【引】
    项目中用了许多UC(User Control),其中有些主页需要知道UC做了某个Event后,进行联动动作.
    例如:如果UC的Button控件被Click,那么主页(Page)要做一个显示不同信息的动作.
    因为主页(Page)不能直接知道UC里Button被Click的事件,这个时候就用到了事件代理.

    【步骤】
    ①为UC添加事件代理

    public event EventHandler AX;

    ②在appropriate触发条件处添加事件
            if (AX != null)
            {
                AX(
    this, e);
                
    //Or use the following sentence code.
                
    //AX(this, new EventArgs());
            }

    ③添加主页(Page)要执行的事件

     protected void Event_AX(object sender, EventArgs e)
        {
            Response.Write("Event has occur!
    <br/>");
        }

    ④在主页(Page)上添加事件代理,从而执行主页上的Function
    方法1:*.CS端

    UC_AXzhz.AX += new EventHandler(Event_AX); 


    方法2:*.aspx端【注:使用此方法,Event_AX必须为protected/interanl/public类型,不能为private类型】

    <AX:UC_AX ID="UC_AXzhz" OnAX="Event_AX" runat="server" />    

    【完整代码】
    UC前端:

    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="UC_AX.ascx.cs" Inherits="UC_AX" %>
    <asp:Button ID="btnClick" runat="server" OnClick="btnClick_Click" Style="z-index: 100;
        left: 156px; position: absolute; top: 113px"
     Text="ClickMe" Height="25px" Width="74px" />


    UC后台:

    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;

    public partial class UC_AX : System.Web.UI.UserControl
    {
        
    //①添加事件代理
        public event EventHandler AX;

        
    protected void Page_Load(object sender, EventArgs e)
        
    {
        }

        
    protected void btnClick_Click(object sender, EventArgs e)
        
    {
            
    //②如果点击了Button, Fire the代理事件
            
    //可以通过多种条件fire事件代理.
            
    //Must add this condition, Otherwise,if AX equal null
            
    //Will throw a exception
            if (AX != null)
            
    {
                AX(
    this, e);
                
    //Or use the following sentence code.
                
    //AX(this, new EventArgs());
            }

        }

    }


    Page前端:

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default_AX.aspx.cs" Inherits="Default_AX" %>

    <%@ Register Src="UC_AX.ascx" TagName="UC_AX" TagPrefix="AX" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        
    <title>Untitled Page</title>
    </head>
    <body>
        
    <form id="form1" runat="server">
        
    <div>
            
    <!--//④Another way:为代理添加需要执行的事件-->  
            
    <AX:UC_AX ID="UC_AXzhz" OnAX="Event_AX" runat="server" />    
        
    </div>
        
    </form>
    </body>
    </html>


    Page后台:

    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;

    public partial class Default_AX : System.Web.UI.Page
    {   

        
    protected void Page_Load(object sender, EventArgs e)
        
    {
            
    //③为代理添加需要执行的事件
            UC_AXzhz.AX += new EventHandler(Event_AX); 
        }


        
    //⑤当UC的Button被Click后,主页上要执行的动作
        protected void Event_AX(object sender, EventArgs e)
        
    {
            Response.Write(
    "Event has occur!<br/>");
        }


    }
  • 相关阅读:
    canvas性能优化——离屏渲染
    event.target 和 event.currentTarget 的区别
    Electron 主进程和渲染进程互相通信
    谈谈 JS 垃圾回收机制
    【Vue】Vue中render函数用到的with(this)中with的用法及其优缺点
    Java递归读取文件路径下所有文件名称并保存为Txt文档
    Java读取Excel指定列的数据详细教程和注意事项
    Sybase ASE无响应的又一个情况
    AWR报告导出的过程报ORA-06550异常
    如何借助浏览器Console使用Js进行定位和操作元素
  • 原文地址:https://www.cnblogs.com/pfs1314/p/1764276.html
Copyright © 2011-2022 走看看