我目前正在使用后面的代码创建自定义控件表单的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,我错过了什么还是做错了什么?