相关问题:Adding custom OnTextChange event handler on custom TextBox
在相关问题中,我问我如何在自定义文本框控件中公开OnTextChange,我们通过以下方式解决了这个问题:
public event EventHandler TextChanged
{
add { customTextBox.TextChanged += value; }
remove { customTextBox.TextChanged -= value; }
}
我正在尝试在实现控件时使用这样的TextChanged事件:
<uc:CustomTextBox ID="customTextBox"
runat="server"
OnTextChanged="CustomTextBox_OnTextChanged">
</uc:CustomTextBox>
运行时似乎永远不会出现以下情况:
protected void CustomTextBox_OnTextChanged(System.EventArgs e)
{
// Do something here
}
或点击:
protected void CustomTextBox_OnTextChanged(object sender, EventArgs e)
{
// Do something here
}
我做错了什么,我错过了什么,这是我尝试做的所有事情的最佳方法还是常用做法?
答案 0 :(得分:3)
您需要设置TextBox的AutoPostBack=True
属性。
如果您正在设计Web用户控件,那么只需在用户控件的代码隐藏中定义公共属性以设置True/False
CustomTextBox
的值:
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;
}
}
答案 1 :(得分:0)
要激活OnTextChanged
,您需要在TextBox上指定AutoPostBack="true"
。
在ASPX标记中:
<uc:CustomTextBox ID="customTextBox" runat="server" OnTextChanged="CustomTextBox_OnTextChanged" AutoPostBack="true"></uc:CustomTextBox>
在CustomTextBox用户控件的代码隐藏中:
public bool AutoPostBack
{
get
{
//the textbox in the user control
return customTextBox.AutoPostBack;
}
set
{
customTextBox.AutoPostBack = value;
}
}