我已经建立了一个编辑页面。有一个评论部分,可能需要删除评论。
我已经承诺使用TextChanged
,因为用户担心点击按钮(滚动眼睛)。我正在动态创建事件:
txtComments.TextChanged += UpdateComments;
如果文本框中有任何内容,但如果删除了所有文本,则事件无法触发,则事件正常。
任何帮助将不胜感激。
答案 0 :(得分:0)
来自System.Web.UI.WebControls.TextBox控件的MSDN:
当文本框的内容在发布到服务器的帖子之间发生更改时,会引发TextChanged事件。只有在用户更改了文本时才会引发该事件;如果以编程方式更改文本,则不会引发该事件。
使用代码清除帖子之间的TextBox
将导致您描述的行为(没有事件触发)。
答案 1 :(得分:0)
如果文本框的值自上次发布到服务器后已更改,则该方法将始终运行。它将当前值与上次发送到服务器的值进行比较,并确定是否应该调用该方法。
答案 2 :(得分:0)
由于您的元素是动态创建的,因此请确保在每个帖子上设置事件处理程序。我相信你必须在Pre_Init vs Page_Load上设置它,但我还没有处理ASP.NET页面生命周期。这是一个链接:http://msdn.microsoft.com/en-us/library/ms178472%28v=vs.85%29.aspx
答案 3 :(得分:0)
这是令人费解的,我似乎无法重现你的问题。这是我用来使它工作的代码,也许你可以将代码与我所做的相比较,看看是否有任何区别。
protected void Page_Load(object sender, EventArgs e)
{
var txt = new TextBox
{
Text = "Initial Text"
};
txt.TextChanged += ThisTextBoxChanged;
form1.Controls.Add(txt);
}
private static void ThisTextBoxChanged(object sender, EventArgs e)
{
System.Diagnostics.Debugger.Break();
}