从代码创建带有TextChanged事件的自定义控件

时间:2018-07-26 16:49:19

标签: c# asp.net code-behind

我目前正在使用后面的代码创建自定义控件表单的DLL。在此控件中,我有一个TextBox,我要在其中创建TextChanged事件,该事件必须在他们使用自定义控件的页面中设置。

  

CustomControlForm.cs

这是我创建文本框的代码:

protected System.Web.UI.WebControls.TextBox NumberTextBox;
public event EventHandler NumberChanged;

protected override void CreateControls()
{
    base.CreateControls();

    NumberTextBox= new TextBox();
    NumberTextBox.ID = "NumberTextBox";
    NumberTextBox.MaxLength = 9;
    NumberTextBox.Columns = 10;
    NumberTextBox.TextChanged += new EventHandler(OnNumberChanged);
}

public string Number
{
    get
    {
        EnsureChildControls();
        return NumberTextBox.Text;
    }
    set
    {
        EnsureChildControls();
        NumberTextBox.Text = value;
    }
}

protected void OnNumberChanged(object sender, EventArgs e)
{
    if (NumberChanged != null)
    {
        NumberChanged(this, e);
    }
}

在那之后,我将在另一个试图设置事件TextChanged的项目中实现它。

  

WebUserControl1.ascx.cs

在该页面中,有以下代码:

    protected override void CreateChildControls()
    {
        base.CreateChildControls();
        CustomControlForm.NumberChanged += new EventHandler(NumberTextBox_TextChanged);
    }

    public void NumberTextBox_TextChanged(object sender, EventArgs e)
    {
        OtherTextBox.Text = CustomControlForm.Number;
    }   

由于某种原因,当我更改NumberTextBox的值时,未触发事件NumberTextBox_TextChanged,我错过了什么还是做错了什么?

0 个答案:

没有答案