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

时间:2011-09-29 10:36:43

标签: c# asp.net events user-controls

相关问题: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
    }

我做错了什么,我错过了什么,这是我尝试做的所有事情的最佳方法还是常用做法?

2 个答案:

答案 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; 
    } 
}