我定义的用户控件,该控件中有一个TextBox和一个dropdownlist。我现在就想,在web form中引用该用户控件后,选中用户控件中的dropdownlist的值后,绑定web form中的DataGrid控件,并从数据库中提取数据出来。能否给用户控件添加一个事件,并让dropdownlist的SelectedIndexChanged事件去执行?

解决方案 »

  1.   

    public event System.EventHandler SelectedChanged ;void OnSelectedChanged(System.EventArgs e)
    {
         if(SelectedChanged != null)SelectedChanged(this,e);
    }DropDownList1_SelectedIndexChanged_1(object sender, System.EventArgs e)
    {
         OnSelectedChanged(e);
    }
      

  2.   

    定义:
    public event EventHandler Change;触发:
    if(Change!=null)
    {
       Change(sender,e);
    }
      

  3.   

    UserControl.ascx.cs中的处理: 
    1. 定义public的事件委托,如ClickEventHandler; 
    2. 在UserControl类中声明事件,如Click; 
    3. 在UserControl类中定义引发事件的方法,如OnClick()方法; 
    4. 在UserControl类的相关方法中调用引发事件的方法,如在Button_Click()中调用OnClick()。 核心代码示意如下: 
    public delegate void ClickEventHandler(object sender, EventArgs e); 
    public class MyUserControl : System.Web.UI.UserControl 

    protected System.Web.UI.WebControls.Button AButton; 
    public event ClickEventHandler Click; 
    protected void OnClick(EventArgs e) 

    if (Click!=null) Click(this, e); 

    private void AButton_Click(object sender, System.EventArgs e) 

    this.OnClick(e); 

    } 包含UserControl的页面cs文件中的处理: 
    1. InitializeComponent()中增加事件处理程序,采用FindControl方法找到UserControl; 
    2. 定义事件处理方法,在该方法中处理UserControl的事件,如UserControl_Clicked()。 
    核心代码示意如下: 
    private void InitializeComponent() 

    this.Load += new System.EventHandler(this.Page_Load); 
    MyUserControl uc = this.FindControl("myUserControlID") as MyUserControl; 
    uc.Click += new ClickEventHandler(this.UserControl_Clicked); 

    private void UserControl_Clicked(object sender, System.EventArgs e) 

    // UserControl_Clicked event hanlder 

      

  4.   

    定义:
    public event EventHandler Change;触发:
    if(Change!=null)
    {
       Change(sender,e);
    }