一个用户控件 如下:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="UserControl_WebUserControl" %>
<table style="width: 100%;">
    <tr>
        <td>
            
            address1</td>
        <td>
           <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        </td>
    </tr>
    <tr>
        <td>
            
            address2</td>
        <td>
            <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
        </td>
    </tr>
    <tr>
        <td>
            <asp:Button ID="Button1" runat="server" Text="Button" />
        </td>
        <td>
            &nbsp;
        </td>
    </tr>
</table>在另一个aspx页面中运用了该用户控件 如何在该页面中获得该用户控件Button1的单击事件
或者如何在aspx页面中注册用户控件中button1的单击事件

解决方案 »

  1.   

    用事件。用户控件:
    public EventHandler MyClick;
    ...protected void Button1_Click(object sender, EventArgs e)
    {
        ...
        if(MyClick != null)
            MyClick(this, EventArgs.Empty);
    }主页面:用户控件.MyClick += new EventHandler(处理方法);protected void 处理方法(object sender, EventArgs e)
    {
        ...
    }
      

  2.   

    通过在页面的顶部添加 <%@ Register %> 指令来引入和使用自定义服务器控件和用户控件
      

  3.   

    谢谢 namhyuk 可以的
    但 能不能再问下  protected void Page_Load(object sender, EventArgs e)
        {
            WebUserControl1.myClick += new EventHandler(click1);
            WebUserControl2.myClick += new EventHandler(click2);   
       }主页面我是这么注册的 但换下 为什么就不行呢—>
      protected void Page_Load(object sender, EventArgs e)
        {
                if(!IsPostBack)
                {
                      WebUserControl1.myClick += new EventHandler(click1);
                      WebUserControl2.myClick += new EventHandler(click2);
                }
        }
    第一次加载的时候注册 但不行 
    那按道理这么写第一次总有用吧 但第一次也没有
      

  4.   

    !IsPostBack里的代码仅仅在你第一次访问该网页时才执行。随后你点击页面上的Button等触发了PostBack时,!IsPostBack里的代码就再也不执行了。
    所以也就不会执行主页面订阅用户控件事件的代码了。
      

  5.   

    用户控件中MyClick(this, EventArgs.Empty);换成MyClick(sender,e);同样能实现