公开然后使用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; } }