给动态添加的textbox加TextChanged事件为什么不触发?
我动态添加textbox的事件TextChanged, 为什么不能触发?本人新手望多多指教!
textbox.TextChanged += new EventHandler(this.tb_TextChanged);
源码如下:
页面源码如下:
textbox.TextChanged += new EventHandler(this.tb_TextChanged);
源码如下:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class testpro : System.Web.UI.Page
{
public int[] arr = null;
public static ArrayList TextArray = new ArrayList();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
txtLength.Attributes.Add("dir", "rtl");
}
}
//protected override void OnPreLoad(EventArgs e)
//{
// base.OnPreLoad(e);
//}
protected void btnNew_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(txtLength.Value.Trim()))
{
plArray.Controls.Clear();
if (int.Parse(txtLength.Value.Trim()) != 0)
{
//plArray.Visible = true;
for (int i = 0; i < int.Parse(txtLength.Value.Trim()); i++)
{
TextBox textbox = new TextBox();
textbox.ID = "txtNum_" + (i + 1).ToString();
textbox.Width = 35;
textbox.Attributes.Add("dir", "rtl");
textbox.Attributes.Add("onkeypress", "javascript:KeyPress(this);");
textbox.MaxLength = 5;
textbox.AutoPostBack = true;
textbox.TextChanged += new EventHandler(this.tb_TextChanged);
textbox.Text = "0";
TextArray.Add(textbox);
plArray.Controls.Add((TextBox)TextArray[i]);
}
}
}
else
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "", "alert('请输入数组长度!');", true);
}
}
protected void tb_TextChanged(object sender, EventArgs e)
{
TextBox tb = (TextBox)sender;
if (tb != null)
{
Response.Write(tb.ID);
}
else
{
Response.Write("you want to die !");
}
}
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
TextBox tb = (TextBox)sender;
if (tb != null)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "", "alert('" + tb.ID + "!');", true);
}
else
{
Response.Write("you want to die !");
}
}
}
页面源码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="testpro.aspx.cs" Inherits="testpro" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<script language="javascript" type="text/javascript">
function KeyPress(objTR)
{//只允许录入数据字符 0-9 和小数点
//var objTR = element.document.activeElement;
var txtval=objTR.value;
var l=objTR.value.length;
var key = event.keyCode;
if((key < 48||key > 57)&&key != 46)
{
event.keyCode = 0;
}
else
{
if(key == 46)
{
if(txtval.indexOf(".") != -1||txtval.length == 0)
{
event.keyCode = 0;
}
}
}
if(txtval.indexOf(".") != -1)
{
var decimalPart=txtval.substring(txtval.indexOf(".")+1,l);
if(decimalPart.length>=2)
{
event.keyCode = 0;
}
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div style="height:auto;margin-bottom:15px;">
数组长度:
<input type="text" id="txtLength" runat="server" onkeypress="javascript:KeyPress(this);"
maxlength="5" value="0" size="1" />
<asp:Button ID="btnNew" runat="server" OnClick="btnNew_Click" Text="声明" /> <span
style="color: Red; font-size: 12px;">[请不要输入小数]</span>
<asp:Panel ID="plArray" runat="server" Width="600px">
</asp:Panel>
<br />
</div>
<div>
<asp:TextBox ID="TextBox1" runat="server" AutoPostBack="True" OnTextChanged="TextBox1_TextChanged"></asp:TextBox></div>
</form>
</body>
</html>
...全文
相关推荐
延迟了TextChanged事件的TextBox文本框控件C#源代码
延迟了TextChanged事件的TextBox文本框控件源代码 等待用户输入完成才跳转
C#实现延迟触发TextChanged事件的TextBox控件开发
在C# WinForms应用程序开发中,TextBox控件作为最常用的数据输入组件之一,广泛应用于用户交互界面中。其核心事件之一 ——,在文本内容发生变化时自动触发,为开发者提供了实时响应用户输入的能力。在C# WinForms开发中,TextBox控件的TextChanged事件在用户输入过程中频繁触发,尤其是在用户快速输入或使用输入法时。这种高频事件的触发不仅浪费系统资源,还可能导致界面卡顿、响应延迟等问题。因此,引入延迟触发机制成为优化用户体验和提升应用性能的重要策略。
Asp.net TextBox的TextChanged事件使用介绍
动态创建的控件是如何加载视图状态,还提到ProcessPostData方法的调用,这里我就用TextBox的TextChanged事件来说说视图数据的加载以及事件的触发
从GridView触发TextBox TextChanged事件
从GridView触发TextBox TextChanged事件
textbox 回车执行事件
在textbox回车执行服务器端的事件


