一个自定义控件,包括一个textbox和一个dropdownlist控件,我想用dropdownlist的selectindexchanged事件来作为整个控件的change事件,该怎么写呀?帮帮我吧。

解决方案 »

  1.   

    我用Event定义了一个委托为什么调用不成功呢?哪位高手给个示例吧
      

  2.   

    using System;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.ComponentModel;namespace MySoft.URLHis.MyControl
    {
    /// <summary>
    /// ComboBox 的摘要说明。
    /// </summary> public class ComboBox : System.Web.UI.WebControls.WebControl,INamingContainer
    {
    private System.Web.UI.WebControls.TextBox edit = new TextBox();
    private System.Web.UI.WebControls.DropDownList droplist = new DropDownList();
    /// <summary> 
    /// 将此控件呈现给指定的输出参数。
    /// </summary>
    /// <param name="output"> 要写出到的 HTML 编写器 </param>
            
    public string Text
    {
    get
    {
    if (!edit.Visible)
    return this.droplist.SelectedItem.Text;
    else
        return this.edit.Text;
    }
    set
    {
    this.edit.Text = value;
    }
    }
    public ListItemCollection Items
    {
    get
    {
    return this.droplist.Items;
    }
    }

    public override Unit Width
    {
    get
    {
    this.EnsureChildControls();
    return base.Width;
    }
    set
    {
    this.EnsureChildControls();
    base.Width = value;
    edit.Style.Clear();
    edit.Style.Add("WIDTH",value.Value.ToString()+"px");
    droplist.Style.Clear();
    droplist.Style.Add("WIDTH",value.Value.ToString()+"px");
    }
    } public bool SelectMode
    {
    get
    {
    return this.droplist.Visible;
    }
    set
    {
    this.edit.Visible = !value;
    this.droplist.Visible = value;
    }
    } public bool ReadOnly
    {
    get
    {
    return this.edit.ReadOnly;
    }
    set
    {
    this.edit.ReadOnly = value;
    }
    } public override System.Web.UI.WebControls.FontInfo Font
    {
    get
    {
    return this.edit.Font;
    }
    } public override System.Drawing.Color ForeColor
    {
    get
    {
    return this.edit.ForeColor;
    }
    set
    {
    this.edit.ForeColor = value;
    }
    } public override string CssClass
    {
    get
    {
    return this.edit.CssClass;
    }
    set
    {
    this.edit.CssClass = value;
    }
    }
    protected void OnSelectIndexChange(object sender, System.EventArgs e)
    {
    } protected override void CreateChildControls()
    {
    this.Controls.Clear();
    this.ClearChildViewState();
    base.Width=200;
    base.Style.Add("HEIGHT","100%");
    droplist.ID = "droplist";
    edit.ID = "edit";
    edit.ReadOnly = true;
    edit.Visible = false;
    edit.Style.Add("WIDTH",base.Width.Value.ToString()+"px");
    edit.Style.Add("LEFT",base.Style["LEFT"]);
    edit.Style.Add("TOP",base.Style["TOP"]);
    edit.Style.Add("HEIGHT",base.Style["HEIGHT"]);
    droplist.Style.Add("WIDTH",base.Width.Value.ToString()+"px");
    droplist.Style.Add("LEFT",base.Style["LEFT"]);
    droplist.Style.Add("TOP",base.Style["TOP"]);
    droplist.Style.Add("HEIGHT",base.Style["HEIGHT"]);
    this.Controls.Add(droplist);
    this.Controls.Add(edit);
    }
    }
    }
      

  3.   

    public class ComboBox : System.Web.UI.WebControls.WebControl,INamingContainer
    {
    ....
    public event EventHandler Changed;protected void OnSelectIndexChange(object sender, System.EventArgs e)
    {
    if (Changed != null)
    Changed(this, EventArgs.Empty);
    }protected override void CreateChildControls()
    {
    ....
    droplist.SelectedIndexChanged += new EventHandler(OnSelectIndexChange);
    ....
    }...}