公开然后使用OnTextChange事件处理程序

相关问题: 在自定义TextBox上添加自定义OnTextChange事件处理程序

在相关问题中,我问我如何在自定义文本框控件中公开OnTextChange,我们通过以下方式解决了这个问题:

public event EventHandler TextChanged { add { customTextBox.TextChanged += value; } remove { customTextBox.TextChanged -= value; } } 

我正在尝试在实现控件时使用这样的TextChanged事件:

    

运行时似乎永远不会出现以下情况:

  protected void CustomTextBox_OnTextChanged(System.EventArgs e) { // Do something here } 

或点击:

  protected void CustomTextBox_OnTextChanged(object sender, EventArgs e) { // Do something here } 

我做错了什么,我错过了什么,这是我做这一切的最佳方式或常用做法吗?

您需要设置TextBox的AutoPostBack=True属性。

如果您正在设计Web用户控件,那么只需定义公共属性以在用户控件的代码隐藏中设置CustomTextBox True/False值:

 public bool AutoPostBack { get { return CustomTextBox.AutoPostBack; } set { CustomTextbox.AutoPostBack = value; } } 

如果您正在开发自定义Web控件,则可以覆盖自定义的AutoPostBack属性。 如果您不想自定义AutoPostBack属性,请不要覆盖它。

如果您覆盖AutoPostBack属性,请调用超类的默认实现。

 public override bool AutoPostBack { get { return base.AutoPostBack; } set { base.AutoPostBack = value; } } 

OnTextChanged ,您需要在TextBox上指定AutoPostBack="true"

在ASPX标记中:

  

在CustomTextBox用户控件的代码隐藏中:

 public bool AutoPostBack { get { //the textbox in the user control return customTextBox.AutoPostBack; } set { customTextBox.AutoPostBack = value; } }