关键是在ascx文件中定义一个事件:
public delegate void DateChangedEventHandler(object sender, DateChangedEventArgs e);
public event DateChangedEventHandler DateChanged;
先定义一个委托和事件,如果有参数再定义参数类,
public sealed class DateChangedEventArgs : EventArgs 
{
public bool FromCalendar;
public DateTime OldDate;
public DateTime NewDate;
}
最后定义事件处理程序:
protected virtual void OnDateChanged(DateChangedEventArgs e)
{
if (DateChanged != null)
DateChanged(this, e);
}然后在调用它的aspx文件里调用...OnDateChanged="as()".然后自己写as()方法就可以了.

解决方案 »

  1.   

    给你写一个示例,保存在虚拟目录上运行test.aspx即可看到效果:test.aspx
    ----------------------------------------
    <%@Page Language="C#" debug=true%>
    <%@Register TagPrefix="webdiyer" TagName="userctrl" Src="usercontrolevent.ascx"%>
    <script runat="server">
         
    void Page_Load(Object sender,EventArgs e) 
    {
    if(!Page.IsPostBack){
    testctrl.SelectedIndex=2;
    }
    }void ChangeUser(object src,EventArgs e){
    box.Text=testctrl.SelectedItem.Value;
    }
    </script>
    <HTML>
    <HEAD>
    <TITLE> Webdiyer制造:) </TITLE>
    <META NAME="Generator" CONTENT="EditPlus">
    <META NAME="Author" CONTENT="Webdiyer">
    </HEAD><BODY>
    <form runat="server">
    <webdiyer:userctrl runat="server" id="testctrl" OnUserChanged="ChangeUser"/>
    <br>
    <asp:TextBox runat="server" id="box"/>
    </form>
    </BODY>
    </HTML>
    usercontrolevent.ascx
    ------------------------------------------
    <%@Control Language="C#"%>
    <script runat="server">
    public event EventHandler UserChanged;public ListItem SelectedItem{
    get{return userlist.SelectedItem;}
    }public int SelectedIndex{
    get{return userlist.SelectedIndex;}
    set{userlist.SelectedIndex=-1;
    userlist.SelectedIndex=value;
    }
    }protected virtual void OnUserChanged(EventArgs e){
    if(UserChanged!=null){
    UserChanged(this,e);
    }
    }void ChangeUser(object src,EventArgs e){
    OnUserChanged(e);
    }
    </script>
    <asp:DropDownList runat="server" id="userlist" AutoPostBack=true OnSelectedIndexChanged="ChangeUser">
    <asp:ListItem>guest</asp:ListItem>
    <asp:ListItem>new user</asp:ListItem>
    <asp:ListItem>user2</asp:ListItem>
    <asp:ListItem>新用户</asp:ListItem>
    <asp:ListItem>管理员</asp:ListItem>
    </asp:DropDownList>
      

  2.   

    webdiyer(陕北吴旗娃)大哥我把你的代码放到.net工程中运行,怎么提示"c:\inetpub\wwwroot\usercontroltest\WebForm1.aspx.cs(26): 找不到类型或命名空间名称“testctrl”(是否缺少 using 指令或程序集引用?)",请问这是怎么回事呀
      

  3.   

    我按照webdiyer(陕北吴旗娃)大哥的做法,但点击下拉框选择时,textbox控件没反应,我是在.net中用的
      

  4.   

    总算可以运行了,谢谢webdiyer(陕北吴旗娃)大哥,不过您写的代码我有些都看不懂,能不能详细说明一下呀
      

  5.   

    就是给你的用户控件定义了一个公共事件而已,这个事件在用户控件的DropDownList的选项改变时引发。