给动态添加的textbox加TextChanged事件为什么不触发?

dt891030 dt891030 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我动态添加textbox的事件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>


...全文

相关推荐

评论 16
收藏 已收藏
分享
返回顶部
dt891030
.NET社区 62,274 成员 668,968 内容