暴露并使用OnTextChange事件处理程序

本文关键字:事件处理 程序 OnTextChange 暴露 | 更新日期: 2023-09-27 18:10:13

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

在相关的问题中,我问我如何在我的自定义文本框控件中暴露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
    }

我做错了什么,我错过了什么,这是做我在这里想做的一切的最佳方式或常见实践方式吗?

暴露并使用OnTextChange事件处理程序

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

如果你正在设计一个web用户控件,然后简单地定义公共属性来设置CustomTextBoxTrue/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触发,您需要在文本框上指定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; 
    } 
}