class A:UserControl
{
  region 事件
  public event EventHandler UserEvent();
  endregion
  
  region 字段
  private string userID;
  endregion
  
  region 属性
  public string UserID
  {
     get
     {
        return userID; 
     }
     set
     {
        userID = UserID; 
     }
  }
  endregion
  
  region 方法
  public void OnClick()
  {
    //...
  }
  endregion
}
然后我将用户控件A拖到一个B.aspx页面中
<%@ Register TagPrefix="cc1" TagName="usercontrol1" Src="../controls/A.ascx" %>
<cc1:usercontrol1 id="uc1" runat="server"></cc1:usercontrol1>问题是
1.如何对uc1的UserEvent进行注册和调用?如在B页面中
页面B中:
public void Method1(){};
uc1.UserEvent+=new EventHandler(Method1);2.如何调用uc1的OnClick()?
3.如何在前台对uc1的属性用服务器脚本赋值?如
<cc1:usercontrol1 id="uc1" UserID='<%=Request.QueryString["uid"]%>' runat="server"></cc1:usercontrol1>关于以上问题,我在编程中的想法是
  1)在页面B的后台cs文件中根本获得不到用户控件A的实例如 this.uc1。请问用户控件A的实例在那?如果这个问题解决,问题1,2就不是问题了。我做自定义控件是派生自WebControl在B中都可以获取如this.wc1。WebControl和UserControl很大不同嘛?
  2)属性用服务器端脚本赋值在asp.net2.0中是没有问题的,关键是在asp.net1.1中不行,是不是解释流程不同?请各位赐教!!!!

解决方案 »

  1.   

    EventHandler委托是有两个参数的,小弟弟public   void   Method1(){}; 
    uc1.UserEvent+=new   EventHandler(Method1); 你这样子肯定编译不过去.
    uc1.UserEvent+=new   EventHandler(Method1); 就是对用户事件进行注册的,只不过我没看到你激活事件的代码,也就是说你这个事件永远激活不了.用户控件UserControl类是没有click这个事件的,同样的你写一个onclick的方法 ,也是无论如何也激发不了的方法 ..关于获取用户控件的实例,你可以在后台中构造实例.就可以获取了.asp.net1.1和2.0在使用习惯上,还是有很大的区别的.当然在vs2008中的3.5更不 一样
      

  2.   

    我只是随便举个例子(不好意思,没注意EventHandler带参问题),我的最大问题是WebControl和UserControl的区别,刚才查了下UserControl的实例就如page类一样,楼上的大哥哥们,我会编写自定义控件ok,我的问题也不是delegate怎么用的问题,我知道他是函数指针的·封装,麻烦大家看看我所说的重点也就是UserControl在那实例化